Add/update/delete permission targets.

:construction: 

WIP for supporting permission targets.

- [ ] tests

cc @opscode/release-engineers 
Setting `principals['users']` or `principals['groups']` doesn't change the value of the `principals` attribute.  After poking at this for a while, I made a big enough mess that I wonder if the right thing to do is to create a `Principals` object that the user can interact with, and leave the `principals` attribute specifically for the client to interact with the server.