Marph

This introduces attribute morphs. `AttrMorph`s allow a consumer to update a attribute value by calling `update`. The name of the attribute and element itself are still passed to the `attribute` hook, but should not be required often.

See https://github.com/mixonic/ember.js/commit/8c7cab5f61c5c1100c77b9196561b1d6dfaac08d for how this might work with Ember.

TODO:

* [x] Test destruction
* [x] Move the sanitization steps just merged into Ember into `AttrMorph` or `DOMHelper`
* [x] Update API of morph per Kris's feedback (I believe `setContent` instead of `update`) (#232)
* [x] Move `normalizeProperty` logic into a `DOMHelper` method called `setProp`, use this method instead of `setAttribute` for normal templates.
* [x] Bring over tests from Ember regarding `setProp`