Refactor usage

- Removes the merging of revisions that share the same status and plan
This was accounting for a use case we don't have (where someone would force a revision to be created for something that is not a status and plan change). But we don't have the use case yet, and the plan history function is the wrong place to do it. It would only make sense when collecting charges in which case it might make more sense to have an alter hook and allow the user / module that is creating the extra revisions to decide what it wants to do with them / how to price them.
- Usage records now need an explicit revision_id, no need to guess and map them anymore. Huge win.
- Adds usage_group plugins.
- Simplifies the charging of usage.