Datasource for Washington

First pass at implementing the datasource for Washington state.

This requires a url_paths.csv file and a custom fetch class
because some precinct-level results are archived in ZIP files.

The custom fields in url_paths.csv needed to work around the
data quirks are documented in openelex/us/wa/mappings/README.md.

PDF results still need to be converted and there are some cases
where there are multiple precinct-level files and it is unclear
which one to use.

Addresses https://github.com/openelections/core/issues/145
Add csv output option to datasource.mappings task

I wanted to be able to quickly sanity-check the mappings output,
so I added a --csvout flag to the datsource.mappings task.

In order to order the header fields in a reasonable way, I defined
the list and ordering of common mapping fields as
``openelex.base.datasource.MAPPING_FIELDNAMES``.
Add preprocessed URL for Washington .mdb results

Add a preprocessed URL for Washington State results that are
shipped in an Access database to the datasource mappings output.

The actual preprocessed result file still needs to be created
(see https://github.com/openelections/core/issues/150), but the
datasource and fetch task will be ready to consume it once
the preprocessed files are created.

Addresses https://github.com/openelections/core/issues/145
Added step for putting virtualenvwrapper.sh in .bashrc to environment setup docs
Merge pull request #159 from rabidaudio/environment_setup_documentation

Added step for putting virtualenvwrapper.sh in .bashrc to docs
RawResult bakery

* Refactor common bakery functionality into a ``BaseBaker`` class
and make ``Baker`` inherit from ``BaseBaker``.
* Clean up docstrings to clarify which methods should be overridden.
* Update Roller and Roller tests to reflect model changes.  Roller
  wasn't updated after RawResult was implemented.
* Implement separate Roller classes for Results and RawResults
* Generalize field transforms instead of expecting all field
  transforms to just be field renaming transforms.
* Exclude ``name_raw`` field from the baked output.  Eventually,
  we'll need to wire ``RawResult`` into ``Roller``, but I didn't
  want to get in these weeds until after implementing the
  ``RawResult`` bakery.
* Add ``--raw`` flag to the ``bake`` invoke task to toggle baking
  raw vs. cleaned results.
* Create a generalized function to generated election-related filenames,
  ``openelex.lib.standardized_filename()``.
* Add a roller field transform to flatten out nested dictionary fields.
  This is needed to handle ``RawResult.vote_breakdowns``.
* Add a new invoke task, ``bake.election_file`` to better reflect the
  use case of the raw bakery.  While the original bake task was designed
  around arbitrary filters, the raw bakery is designed to bake one file
  per election.
* Use unicodecsv for writing results instead of csv.
* Fix docstring for ``BaseDatasource.elections()``.

Addresses https://github.com/openelections/core/issues/152
RawResult bakery

* Refactor common bakery functionality into a ``BaseBaker`` class
and make ``Baker`` inherit from ``BaseBaker``.
* Clean up docstrings to clarify which methods should be overridden.
* Update Roller and Roller tests to reflect model changes.  Roller
  wasn't updated after RawResult was implemented.
* Implement separate Roller classes for Results and RawResults
* Generalize field transforms instead of expecting all field
  transforms to just be field renaming transforms.
* Exclude ``name_raw`` field from the baked output.  Eventually,
  we'll need to wire ``RawResult`` into ``Roller``, but I didn't
  want to get in these weeds until after implementing the
  ``RawResult`` bakery.
* Add ``--raw`` flag to the ``bake`` invoke task to toggle baking
  raw vs. cleaned results.
* Create a generalized function to generated election-related filenames,
  ``openelex.lib.standardized_filename()``.
* Add a roller field transform to flatten out nested dictionary fields.
  This is needed to handle ``RawResult.vote_breakdowns``.
* Add a new invoke task, ``bake.election_file`` to better reflect the
  use case of the raw bakery.  While the original bake task was designed
  around arbitrary filters, the raw bakery is designed to bake one file
  per election.
* Use unicodecsv for writing results instead of csv.
* Fix docstring for ``BaseDatasource.elections()``.

Addresses https://github.com/openelections/core/issues/152
Merge remote-tracking branch 'origin/dev' into dev
Merge branch '152-rawresult_bakery' into dev

Conflicts:
	openelex/tasks/bake.py
Bake one raw result file per reporting level

Bake one raw result file per-reporting level, per-election.

Also remove some non-standard utility fields from results to
reduce size.

Create utility function for extracting available reporting levels
for election results.

Factor out date reformating logic into a utility function.

Addresses https://github.com/openelections/core/issues/160
merged