Make EmailAddress.display_name to be an arbitrary string

The problem was that there was no way to create an EmailAddress with a particular human readable display name. Even though EmailAddress constructor had a `display_name` parameter it de-facto had a semantic of an RFC compliant display name **representation**. The difference between human readable form and RFC representation is subtle but substantial, e.g. in representation quotes are just part of the format, whereas in human readable form quotes are a part of the representation. E.g. representations `"Foo Bar"` and `Foo Bar` both correspond to display name `Foo Bar`, at the same time display name `"Foo Bar"` has representation `"\"Foo Bar\""`.

To make sure that whatever is passed in `display_name` parameter is used as human readable display name, a new parameter `parsed_name` was introduced. It is and should be used by parser only, so that values passed in `parsed_name` by the parser are properly unquoted and converted from mime to unicode. `display_name` field always returns a human readable form, and `full_spec()` was modified to make sure that display name is properly encoded and quoted if needed.
Since we unescape (`\"` -> `"`) here and only in quoted regions of the input string, it is not possible (or at least I cannot figure out how to do that) to write one regular expression that will do all that. Some bits of logic can be replaced with regular expressions, but in my opinion that might make the algorithm less readable.