Feature/range1d datetime (WIP)

This will require a bit of discussion, especially around the Date property.

Closes https://github.com/ContinuumIO/bokeh/issues/635
Is `Range1d(start=date(18, 6, 2014), end=1.0)` meaningful? One could definitive argue that `Float` could represent an instant here, but I think that's wrong. Disallowing this one would have to assure that `start` and `end` are of the same type, i.e. `start = T; end = T`, where `T = Either(Float, Date)`. That wouldn't work unfortunately, because although there is only one `T`, properties `start` and `end` are independent anyway. Currently we don't have any mechanism for expressing type parameters. Similar issue there is with `InputField` and its subclasses. However, in that case it's easier because `InputField` is an abstract class and we instantiate only specialized subclasses, but here we would like to actually construct `Range1d`, not some `FloatRange1d` or `DateRange1d` (which technically we could do, because we could manipulate with `Range1d`'s constructor to achieve desired behavior). Given that we have to make this work on Python (+Scala, Julia, etc.) and JS side, I think that introducing `DateRange1d` is the way to go (then we can easily use `isinstance` or equivalent to ask what we're dealing with, without need for `has_datetime`, etc.). We could even leave `Range1d` as is and just make it a base class for `DateRange1d` (and possibly other kinds in future). That's not perfect solution, but should be enough.