Detach servers (remove from group without removing in Nova)

This adds the "detach" feature to the API.

- I used the term `purge` to mean "also kill the machine in Nova". I started with `delete`, but it seemed really awkward to have a DELETE request that is documented as deleting a server and then has a `delete` query argument...
- I spent a good chunk of time cleaning up the tests and fixing docstrings. It would be useful to give those a close (review) inspection to make sure I didn't screw it up.
Short version: it seemed like the right thing to do. Few reasons:

1. IIUC, they won't actually have to think about this unless they actually want detach, because it's an optional query argument.
2. It seems like they're orthogonal (that is, I can see a use case for each of the four combination), so either we add replace to the other endpoint, or some of those interactions become really annoying to do.
2. From the discussion we had a while ago, ISTR there were like three proposals for doing it. I thought there was a preference for tacking it onto DELETE because that's what best matched the customer story. That is, "detach" means "remove from scaling group", but that's what this endpoint already does; it means "remove from scaling group but also don't delete", which is what this patch implements on the API side.
3. From our IRC conversation, I actually thought that's what we all wanted. I guess part of the problem is that, following that conversation, I started working from the spirit and not the letter of the ticket, since the letter of the ticket appeared to be wrong:

[18:35:03] <lvh> manisht: So, the ticket description itself talks about implementing an *endpoint*, but judging by https://github.com/rackerlabs/otter/blob/master/otter/rest/groups.py#L682 that's already been done
[18:35:21] <lvh> Or at least, that's what the ticket description talks about
[18:35:54] <lvh> But I thought the goal was to be able to "detach" a server, which I thought meant "remove from scaling group but not actually get rid of"
[18:36:04] <lvh> which also seems to match your suggestion
[18:36:43] <lvh> manisht: So, IIUC, the completion criterium for this ticket is: 1) add delete=True to that thing you linked 2) add delete to the REST API?
[19:22:30] <manisht> lvh: correct :)
[19:22:34] <manisht> lvh: thanks for doing this
[19:23:10] <manisht> its so nice when people just *understand* what you intended to say :)

I guess I misunderstood what you intended to say after all. Sorry :(