Refactor out keys field

This change set refactors out the `keys` field in exchange for an expansion on the abilities of the `id` field. Passing an array to `id` will now cause it to behave the same way the old `keys` field did.

This change is entirely non-breaking, however tests which defined the `keys` field have been updated to use `id` instead.