Generic EntityEndpoints

`EntityEndpoints` supports java generics so that client consumers don't have to code through Jackson's `JsonNode` interface.
 - Calls to SEARCH and GET require an instance of `EntityClass` which takes a param the class of the actual data desired from the API
 - SEARCH will return an instance of `EntitySearchResponse` which contains an instance of the desired data, as well as a `MetaResults` object which contain exactly what you would expect from the API doc
 - PUT & POST require an instance of `EntityData` which takes both a param of the class of the data being sent to the server, and the data itself.  The data returned from the API is returned.
- DELETE doesn't take any type/data parameters and now returns void.  The data returned from the API is just the ID, which is already contained by the person making the DELETE call, so returning it is of little value.