Feature/range1d datetime (WIP)

This will require a bit of discussion, especially around the Date property.

Closes https://github.com/ContinuumIO/bokeh/issues/635
So, I am ok with this idea, but I would like to keep it easy for users to create range objects without having to care too much about finding the right class out of five or six. How about this:

* `NumericRange1d` This is basically the current `Range1d` an object that represents a `start` and `stop` of generic real values

Then Specializations for date/time:

* `DateRange1d`
* `TimeRange1d`
* `DatetimeRange1d`

If you want to have these inherit from ` DatetimeLike` sure that seems OK too. 

Then `Range1d` becomes a function:
```
def Range1d(*args, **kw):
    # inspect arguments and return appropriate specialized Range1d
    # all of these should be ok:
    # Range1d(0, 10)
    # Range1d(start=0, end=10)
    # Range1d([0,10))
    # Range1d(range_obj)
    # Range1d(numpy_datetime_start, numpy_datetime_end) # or pandas, datetime.date, etc
    # Range1d("2014-06-10", "2014-06-17")
```
This way, current usage on the python side is completely unaffected, code for accepting tuples as ranges can be simplified by calling this function, etc. 

I would say that this could be done in stages between python and js. Right now we could create all of these objects on the python side, but they could start out all serializing to a `Range1d` on the js side. Then later (next release) we can actually flesh out the objects on the js side so they can be used for widget selection, etc. That would be my suggestion.