OS Ceilometer API support

OpenStack Ceilometer API's support (Skeleton & meters/samples API)


open issues I need help with -
1. meters and samples can get query params, problem is they cant be sent as null/empty string since ceilometer fails. example - {"filter": "", "orderby": "", "limit": ""}
need a way to avoid sending empty query params 
2. for meters API -
currently I've created "MetersApi.listMeters(QueryOptions... options)" should I follow this notion or simplify it as
"MetersApi.listMeters(String filter)" where filter is a json filter as in item #1
3. note that MetersApiMockTest.testListMetersWithQuery is failing since I cant get the API to send the QueryOptions on POST, it always goes on the GET as query params. any help would be appritiated 
To give you an idea of how simple AutoValue would be for the Meter class (minus the builder code), we would end up with a class similar to the following:
```
@AutoValue
abstract class Meter {
  
   Meter() {}

   @SerializedNames({"user_id", "name", "resource_id", "source", "meter_id", "project_id", type, unit})
   public static Meter create(String userId, String name, String resourceId, String source, String meterId, String projectId, String type, String unit) {
      return new AutoValue_Meter(userId, name, resourceId, source, meterId, projectId, type, unit);
   }   

   abstract String userId();
   abstract String name();   
   abstract String resourceId();
   abstract String source();
   abstract String meterId();
   abstract String projectId();
   abstract String type();
   abstract String unit();
}
```
Oh, isn't that so nice! ;)