Add ability to set ContentID on attached binaries

To be able to use an attached binary as an embedded image, you must be able to refer to it by its ContentID (e.g. <img src="cid:blah..." ...></img>.  To allow this to work, I added an optional named parameter content_id, defaulted to None, after content_type.  If set to anything other than None, the attachment's ContentId key is set to the value passed in.  What value the content id is set to is left up to the user of the API.
Change if test structure for content_id

At maintainer request, using if content_id is not None instead of if not content_id is None
Unit test for ContentId, pass build

Cleaned up code to pass all tests, added a unit test for adding
the ContentID property onto an attached file.
Unit tests, content_id validity checking

Added in unit tests and documentation for the content_id parameter
explaining what format it should be (RFC 2392 content-id URL that
starts with "cid:").
Python 3 unicode versus byte test fixes

ContentID tests that actually mocked out file reading need to be
smart about using the correct type for binary input.  Convert
tests to use b'_something_' as the mocked return for read() so
that it works in python2 and python3
Style/clarity changes

Use more idiomatic python constructs/project house style for
string interpolation: new style str.format versus %, use
str.startswith instead of slice+string comparison.
Merge pull request #4 from jonathana/master

Add ability to set ContentID on attached binaries