Add layout capability

* [x] factor canvas code into `Canvas` object
* [x] de-dupe `Plot` and `GMapPlot`
* [ ] expose kiwi objects
* [x] add `Panel` and `CartesianFrame` that use kiwi for constraints 
* [x] add simple plot layout with central `CartesianFrame` content area
* [x] replace `ViewState` with simple plot layout 
* [x] configure axes with panels for layout
I hate code like that to. It is intended as a deprecation path to be removed in the near future. I should have left a comment. Two books seems much easier and clearer and better to document than some arcane string codes. 



> On Jul 2, 2014, at 6:31, Mateusz Paprocki <notifications@github.com> wrote:
> 
> In bokeh/objects.py:
> 
> >  class Plot(Widget):
> >      """ Object representing a plot, containing glyphs, guides, annotations.
> >      """
> >  
> > +    def __init__(self, **kwargs):
> > +        if 'border_symmetry' in kwargs:
> > +            border_symmetry = kwargs.pop('border_symmetry')
> > +            if border_symmetry is None: border_symmetry = ""
> > +            kwargs.setdefault('h_symmetry', 'h' in border_symmetry or 'H' in border_symmetry)
> > +            kwargs.setdefault('v_symmetry', 'v' in border_symmetry or 'V' in border_symmetry)
> I hate code like this. What was wrong with the enum approach, besides missing "both" case?
> 
> —
> Reply to this email directly or view it on GitHub.