Refactor the has_many form

First and foremost, this PR moves the JS `onclick` calls out into their own dedicated file. This also adds before & after hooks so you can more easily update dynamic parts of the form, for example if you're using a plugin like Chosen for interactive dropdowns:

```coffee
$ ->
  $('a.button.has_many_add').on 'has_many_add:after', ->
    $(@).siblings('fieldset:last').find('select').chosen()
```

There's one other change here: I switched around the text used for has_many deletion because it didn't make sense to me that delete was applied to something that hadn't yet been saved, while remove was used for saved records.

#### Update:

After talking with @igorbernstein, I updated the jQuery hooks to be bound to the parent div, and now the after-add hook returns the just-added fieldset:
```coffee
$ ->
  $('.has_many').on 'has_many_add:before', ->
    alert 'foo'
  $('.has_many').on 'has_many_add:after', (e, fieldset)->
    fieldset.find('select').chosen()
    alert 'bar'
```

#### Another update:

You can now short-circuit creation of new has_many fieldsets:
```coffee
$ ->
  $(document).on 'has_many_add:before', '.has_many', (e)->
    if $(@).children('fieldset').length >= 3
      alert "you've reached the maximum number of items"
      e.preventDefault()