Add README file to the mime package

Also update CHANGELOG after last change.

R=kustermann@google.com, wibling@google.com
BUG=http://dartbug.com/22442

Review URL: https://codereview.chromium.org//936733004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart/pkg/mime@43841 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8fa7caa..98abd3a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+# 0.9.3
+
+* Fixed erroneous behavior for listening and when pausing/resuming
+  stream of parts.
+
 # 0.9.2
 
 * Fixed erroneous behavior when pausing/canceling stream of parts but already
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..dd69358
--- /dev/null
+++ b/README.md
@@ -0,0 +1,48 @@
+#MIME type package
+
+Package for working with MIME type definitions and for processing
+streams of MIME multipart media types.
+
+##Determining the MIME type for a file
+
+The `MimeTypeResolver` class can be used to determine the MIME type of
+a file. It supports both using the extension of the file name and
+looking at magic bytes from the begining of the file.
+
+There is a builtin instance of `MimeTypeResolver` accessible through
+the top level function `lookupMimeType`. This builtin instance has
+the most common file name extensions and magic bytes registered.
+
+    print(lookupMimeType('test.html'));  // Will print text/html
+    print(lookupMimeType('test', [0xFF, 0xD8]));  // Will print image/jpeg
+    print(lookupMimeType('test.html', [0xFF, 0xD8]));  // Will print image/jpeg
+
+You can build you own resolver by creating an instance of
+`MimeTypeResolver` and adding file name extensions and magic bytes
+using `addExtension` and `addMagicNumber`.
+
+##Processing MIME multipart media types
+
+The class `MimeMultipartTransformer` is used to process a `Stream` of
+bytes encoded using a MIME multipart media types encoding. The
+transformer provides a new `Stream` of `MimeMultipart` objects each of
+which have the headers and the content of each part. The content of a
+part is provided as a stream of bytes.
+
+Below is an example showing how to process an HTTP request and print
+the length of the content of each part.
+
+    // HTTP request with content type multipart/form-data.
+    HttpRequest request = ...;
+    // Determine the boundary form the content type header
+    String boundary = request.headers.contentType.parameters['boundary'];
+
+    // Process the body just calculating the length of each part.
+    request.transform(new MimeMultipartTransformer(boundary))
+        .map((part) => part.fold(0, (p, d) => p + d))
+        .listen((length) => print('Part with length $length'));
+
+Take a look at the `HttpBodyHandler` in the [http_server][1] package for
+handling different content types in a HTTP request.
+
+[1]: https://pub.dartlang.org/packages/http_server