Remove deletes

What
====

There is littered throughout the code a bunch of `option.delete(:id)` This is generally a bad idea and should go away for many reasons.

1. Thread safety
2. Why are we modifying the options that are being passed in this is silly

How to test
==========

I put in a few extra tests but unfortunately I think that we need better tests around some of the weirder edge cases like the case where we don't want filter out things like id, email, name etc.