DST and leap year fix

Hi,

We had two problems with the computation of the ranges in the RangeAggregator:
- it does not take **DST** into account. Example: when computing day aggregations over the year, the day range is from 0am to 0am in winter and from 1am to 1am in summer. 
- it does not take **leap years** into account.

## Getting the time zone
In order to fix for DST, I needed the timezone of the user so
- I added a timezone field in webroot/index.html
- I modified the functions in  webroot/js/kairosdb.js and webroot/js/kairosdb.js to deal with the timezone field
- I added a DateTimeZoneDeserializer in GsonParser
- I added a field timezone in core/datastore/Sampling

If no timezone is specified, the time zone of the machine will be used (just like in previous versions).

## Fixing range computation
All range computation are done with jodatime. To avoid dealing with TimeUnit throughout the code of RangeDataPointAggregator, I extract the DateTimeProperty corresponding to the TimeUnit in the  constructor. When I compute the start and end of the ranges, I only use DateTimeProperties forgetting about the TimeUnit and their special cases.

Jodatime deals with dst, leap years, month arithmetics for us.

Additionally, the sampling is not aligned anymore to the beginning of weeks, month or year when using a unit of respectively, week, month or year (It allows to compute aggregation wednesdays to wednesday, etc).

## Unit tests
Added unit tests in the range aggregator:
- test_dstMarch
- test_dstOctober
- test_februaryRange
- test_leapYears

*This is my first pull request, any advice is welcome* :)
Yes it should be changed.  Let me explain it another way.  Say I do a relative query for an hour.  And I do a sum over 5 minutes and the data is reported every 1 second.  Where do the 5 minute buckets start?  By default they start with the beginning of the query (1 hour ago from now).  If I refresh my graph every minute the 5 minute bucket will be summing a different set of data points every time I refresh (the jumping of the data).  

Now comes the alignment.  If I align the buckets on the hour and not the start of the query the bucket will be summing the same data points every time I query.  This code is used to align the buckets in time so one 5 minute bucket will be from the hour to 5 min past the hour and so on.

Even with aligning on the hour I could still see a jump in the data if I was bucketing every 13 min and the start time passed an hour mark, I just aligned it on the day.  I hope that helps.