Feature/range1d datetime

This will require a bit of discussion, especially around the Date property.

Closes https://github.com/ContinuumIO/bokeh/issues/635
Right, I had in mind that in the ideal situation, `Range1d` could be both the factory and the base class (so that `isinstance(x, Range1d) will work, and so will `Range1d(date1, date2)`), but that will not work with just `__new__` afaik:
```
In [1]: class Base(object):
   ...:     def __new__(cls, *args, **kw):
   ...:         return Child(*args, **kw)
   ...:     

In [2]: class Child(Base):
   ...:     def __init__(self, *args, **kw):
   ...:         print args, kw
   ...:         

In [3]: Base(0,10)
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-4-50141e9fc203> in <module>()
----> 1 Base(0,10)

[stuff]

RuntimeError: maximum recursion depth exceeded
```
I thought you would need to mediate the object creation with met class in this case, but maybe I am overthinking things or missing something obvious.