initial support for reading/writing availability

Writing availability looks like,

POST /rhq-metrics/metrics/availability

[
  {
    "tenantId": "rhq-metrics",
    "name": "M-A1",
    "data": [
      {"timestamp": 1416351885172, "value": "up"},
      {"timestamp": 1416351885572, "value": "down"},
      {"timestamp": 14163518850892, "value": "up"}
    ]
  },
  {
    "tenantId": "rhq-metrics",
    "name": "M-A2",
    "attributes": {"env": "test", "units": "MB"},
    "data": [
      {"timestamp": 1416276133964, "value": "down"},
      {"timestamp": 1416276133965, "value": "down"},
      {"timestamp": 14162761339646, "value": "up"}
    ]
  },
  {
    "tenantId": "rhq-metrics",
    "name": "M-A3",
    "attributes": {"env": "test", "units": "bytes"}
  }
]

and fetching availability,

GET /rhq-metrics/metrics/availability/M-A1

{
  "tenantId": "rhq-metrics",
  "name": "M-A1",
  "attributes": {},
  "data": [
    {
      "timestamp": 1416351885572,
      "value": "down"
    },
    {
      "timestamp": 1416351885172,
      "value": "up"
    }
  ]
}

This commit also includes a big refactor of some of the domain classes. There is
now a base Metric class from which NumericMetric and AvailabilityMetric extend.
A Metric has a 1-to-many association of MetricData which is the actual data
point. MetricData is also abstract. NumericData and Availability inherit from
it.