WP_JSON_Controller POC

Use @joe_hoyle's proposal from #551 to register the new taxonomy terms controller introduced in #549
> But if we can't define abstract static methods, we have no way of enforcing type.

That is true - if you are extending the base controller, extending anything else doesn't give you this enforcement anyway as the parent has implemented the method anyway. But yeah, I see what you are saying.

> Further, I don't think using state would be as easy as you make it seem once those methods are static. If the API assumes that those methods are static, you'd have to do a lot of back twisting to introduce state within that object, without resorting to some sort of singleton pattern.

The API wouldn't be making that assumption. It's purely up to the callback (this class in this case) whether it chooses to pass an instantiated object or the class name the API registered route. The point is the API doesn't need anything to use as a route controller to have state - everything is passed to the specific method just as `get_items` that you need to handle the request.

I'm happy to go with using instantiation if that can practically make things easier - however we need to make sure cross calling Endpoint Controllers is easy - I don't want to have to instantiate a `WP_JSON_Taxonomy_Controller` and set up a bunch of stuff to re-use `get_items`, my idea with keeping the methods static would mean it would always be easier to cross call as it means you have to pass everything that's required to the method, as it's "not allowed" to use state. Maybe we can just be careful when writing the methods that it's still easy to re-use internally to solve that.

In all of this, I actually don't see any need for any state across the controller which is why maybe I am making it out to be easier than you think it would be to achieve this. I see the controller class as a means of wrapping up related callback handlers and giving us subclassing to give us some DRYness, but for most intents and purposes they are self contained functions rather than instance methods to act on the data of the object (ala OOP principles).