Invitations bug

Counterpoint: [This](https://github.com/johnnymo87/LocalSupport/blob/bad-invitations/app/controllers/invitations_controller.rb) is what all the logic looks like when dumped into the controller.

Attribution: I've borrowed a lot of ideas from what I see in [fantasyhub](https://github.com/thatrubylove/fantasyhub) by @thatrubylove .

The `Invitations` service runs with this [one method](https://github.com/johnnymo87/LocalSupport/blob/invitations-bug/app/services/invitations.rb):

    def run_messages(params, invited_by)
        reduced(invite(parse(params), invited_by))
    end 

The service processes batches of invitations as such: 
* Incoming params are checked for having all the required keys
* The boolean for resending invitations is passed to `Devise`
* The invitation data comes and goes as an array of hashes
* Each invite is attempted, and a `user` is associated with an `organization` if it succeeds
* The outcome of each invite is recorded, and sent back with an organization id
* To assist the jQuery-powered view, the array of hashes is reduced to a single hash

    ---


The directory structure is meant to be a clue ... the service has two components: a `key_mapper` and an `inviter` ... the `inviter` has two sub-components: `invite_resender` and `user_inviter`.

 _(non-related files omitted)_
app/services/
├── invitations
│   ├── inviter
│   │   ├── [devise_invite_resender.rb](https://github.com/johnnymo87/LocalSupport/blob/invitations-bug/app/services/invitations/inviter/devise_invite_resender.rb)
│   │   └── [devise_user_inviter.rb](https://github.com/johnnymo87/LocalSupport/blob/invitations-bug/app/services/invitations/inviter/devise_user_inviter.rb)
│   ├── [inviter.rb](https://github.com/johnnymo87/LocalSupport/blob/invitations-bug/app/services/invitations/inviter.rb)
│   └── [key_mapper.rb](https://github.com/johnnymo87/LocalSupport/blob/invitations-bug/app/services/invitations/key_mapper.rb)
└── [invitations.rb](https://github.com/johnnymo87/LocalSupport/blob/invitations-bug/app/services/invitations.rb)

Previously, the invitation system never tried to associate organizations with their invited users until after the user accepted. When the user accepted their invite, the system would use the user's email to look up the organization that invited it, but this method proved itself unreliable when it became clear that user emails were being mutated in the creation process, making this lookup fail.

Now, the association between the user and organization is set as soon as the invite is successfully sent.