Added a `draw_legend` context manager.

To ignore commands from the exporter, renderers can check the following
attribute from the Renderer class from which they are a subclass:

`if self._current_legend is not None`

Files Changed:
==============

exporter.py
-----------
- added `crawl_legend`, similar to other `crawl_*` methods
- within `crawl_ax`, renderer's `draw_legend` is now called

base.py
-------
- added `draw_legend`, a context manager
- added `open_legend`, to be reimplemented by subclasses
- added `close_legend`, to be reimplemented by subclasses

utils.py
--------
- added `get_legend_properties`, just returns handles and labels

fake_renderer.py
----------------
- updated self.output to include opening and closing legends

test_basic.py
-------------
- updated comparison strings to include opening and closing legends
Changed logic for legends.

Files Effected:
===============

exporter.py
-----------

- Legend context only opened if `legend is not None`
- Legend contents drawn only if `legend.get_visible()`

test_basic.py
-------------

- Added legend test where legend is not visible. This causes the legend
context to open and information to be passed to renderers. However, no
SVG draw commands are issued because nothing should be drawn.

utils.py
--------

- Passes both `ax` and `legend` to `get_legend_properties` and now
includes a `visible` key in the `props` dict.
Added a `pass` keyword in methods that are to be reimplemented in base.
Merge pull request #17 from theengineear/legend_as_context

Added a `draw_legend` context manager.