allow custom types to be created and run

The API for `ampersand-dom-bindings` would be:
```js
domBindings({
  'model.key': {
    type: 'customType',
    selector: '.thing'
  }
}, {
  customType: function (el, value, previousValue) { /* ... */ }
})
```

The idea is that `ampersand-view` could have a `bindingTypes` hash that would get passed to `ampersand-dom-bindings` so that they could be used like this:
```js
View.extend({
  bindings: {
    'model.name': {
        type: 'customNameValue',
        hook: 'name'
    }
  },
  bindingTypes: {
    customNameValue: function (el, value, previousValue) { /* ... */ }
  }
});
```

Closes #21
So the minor feedback i mentioned is i'd rather we determine at the top while we're doing the "parsing" anyway whether or not this is a custom binding and if so applying it. Rather than doing that as the last check since we're comparing all the others against strings. 

basically determininng if it's a function or string first.