Make the media replacement smarter and not destructive

* Updating media no longer blindly replaces text, handles when the user
makes changes to the HTML manually or from another device, and keeps
attributes in place that the media settings can not handle
* Changed all the media notifications to be sent in the same way. The
notification object is always the sender and Media and MediaSettings
are sent inside the userInfo dctionary.
* Remove the extra columns added to the database and set the version
back to 8
* Added support for handling media linking to custom URLs
* New class added called MediaSettings
** Class method createMediaSettingsForUrl can be used to pull out the
HTML for a media object matching the URL. This HTML will include the
caption, a and img elements.
** 5 properties are exposed that can be set from the new
MediaSettingsViewController (captionText, alignment, customWidth,
customHeight, linkHref). Making changes to any of these will only
replace/update the text in the media HTML and leave all other
attributes alone.
** Added a few unit tests for MediaSettings parsing and replacements