Adding remote-method

This provides functionality similar to rails version of `link_to` for methods other than `GET`, allowing you to query methods on different endpoints, and partial page replacing different refresh keys depending on the response status

It requires your node to be marked up with:
- `remote-method`: the HTTP method you wish to call on your endpoint
- `href`: the URL of the endpoint you wish to hit
- `refresh-on-success`: (optional, but you'll almost always want it) which refresh keys will get refreshed, using the body of the response.  This is space-delimited
- `refresh-on-error`: (optional) see above, but using body of XHR that has failed
- `remote-once`: (optional) Only do this once.  Removes `remote-method` and `remote-once` from element after consumption
- `full-refresh`: Instead of using the content of the XHR response for partial page replacement, we will instead re-GET the URL in question.  Defaults to `true` if neither `refresh-on-success` nor `refresh-on-error` are provided.

It emits a few events:
- `turbograft:remote:start`: before XHR is sent
- `turbograft:remote:always`: always fires when XHR is done
- `turbograft:remote:success`: always fires when XHR was successful
- `turbograft:remote:fail`: always fires when XHR failed
- `turbograft:remote:fail:unhandled`: fires after the above event, but when we didn't partially replace anything with `refresh-on-error` (because there was no `refresh-on-error` supplied)

Each event also is sent with a copy of the `xhr` in case you need to look at anything in there, as well as a reference to the element that initiated the action.  E.g.,:

```coffee
      initiating_target = document.createElement("div")

      $(document).one "turbograft:remote:start", (ev) ->
        assert.equal "/foo/bar", ev.originalEvent.data.xhr.url
        assert.equal initiating_target, ev.originalEvent.data.initiator
```

This works on any `A` or `BUTTON` node, provided they are not `[disabled]` or `.disabled`

Usage
===
A typical rails-y usage
---
`<a href="<%= delete_foo_path %>" remote-method="DELETE" refresh-on-success="foo-container" refresh-on-error="error-box">Delete this foo</a>`

When clicked, submits a `DELETE` to `delete_foo_path`, and if successful, uses the contents of the response to replace any sections with refresh key `foo-container`.  If the command were unsuccessful, it uses the response body to replace the `error-box` refresh key.

No-nonsense remote methods
---
`<a href="<%= delete_foo_path %>" remote-method="DELETE">Delete this foo</a>`

When clicked, submits a `DELETE` to `delete_foo_path`.  When this is successful, it will then re-GET the current URL and replace the entire page contents.  This is for cases where sometimes you just don't want to be bothered rendering partials, and maybe you just want to send a `head :ok` back from your `DELETE` and make the client re-GET.


No-nonsense remote methods, but selectively updating the page
---
`<a href="<%= delete_foo_path %>" remote-method="DELETE" refresh-on-success="foo-container" full-refresh="true">Delete this foo</a>`

When clicked, submits a `DELETE` to `delete_foo_path`.  When this is successful, it will then re-GET the current URL and replace _only_ the refresh key `foo-container` (as opposed to the entire page, as in the previous section).  Similar to the previous section, but giving you slightly more control in page replacement


We should move this to the manifest instead (note the require_self).

```coffeescript
#= require_self
#= require click
#= require component_url
#= require csrf_token
#= require link
#= require page
#= require page_cache
#= require turbolinks
#= require initializers

window. TurboGraft ?= { handlers: {} }
```