add gcm_middleware gem

- extracted all middleware into it's own gem
update readme

- WIP not actually what gem does