move mongo cnx initialization to tasks framework, to allow testing of base modules
fix MD validation logging
add configurable init_db function
Merge branch 'master' into dev
Add year argument to public BaseDatasource methods

This is a little thing, but caused a moment of friction when I
was getting started.

The invoke tasks appear to pass a year argument to these methods
and the states that are implemented all have the year argument
in their signature.

If a developer doesn't implement one of the required methods in
the state.datasource.Datasource class, a TypeError is raised
because of the mismatched signature instead of the NotImplemented
exception which would have reminded the contributor which methods
they need to implement in their subclass.
Merge pull request #42 from ghing/dev

Add year argument to public BaseDatasource methods
added initial wv loader
Message about supported Python versions

Add text to the README and a check in setup.py that indicates
that this project is primarily developed with Python 2.7.
Merge pull request #43 from ghing/dev

Message about supported Python versions
Stub out baker class and task

* Stubbed out openelex.base.baker.Baker
* Stubbed out openelex.tasks.baker.state_file tasks
* Basic unit test cases (and a few tests) in tests.test_baker
* Added UnsupportedFormatError to openelex.exceptions

Addresses #39
Merge branch 'dev' of github.com:openelections/core into dev
Refactor to allow passing filtering/limiting args to each method

Given the long goal of filtering/limiting across states, remove
state as a required argument to the constructor and accept
filtering arguments to the different methods, imagining an
eventual chainable interface that breaks out filtering, limiting
and writing as separate calls.

I don't know if this is the best way to do it, but it makes the
most sense to me today.

Addresses #39
First pass at bakery

There's still a lot to do, but at this point it:

* Grabs and flattens data
* Writes CSV and JSON

Addresses #39
Use same timestamp for both data and manifest file.

Clean up the signatures for the writing and filename generation
methods so that they can take a timestamp from calling code.

Create the timestamp that will ultimately be used for generating
file names in the invoke task so the same timestamp will be used
for generating the filename of the manifest and the data file.

Handle creating the output directory, if it doesn't exist in the
top-level  write() method instead of repeating it in the format-
specific write methods.

Addresses #39
s/kwargs/filter_kwargs/

Clarify that the keyword arguments reflect the raw filtering arguments
that are passed down from the CLI arguments to the invoke task.

"There are only two hard things in Computer Science: cache invalidation and
naming things."

-- Phil Karlton

Addresses #39
Real (but still incomplete) information in manifest.

We still need to decide on what data should be in the manifest
and how it should be formatted.

Addresses #39
Pass outputdir argument to write, write_manifest

Pass the outputdir command line argument through to
``Baker.write()`` and ``Baker.write_manifest()``.

Update indentation of chained method calls. I like chaining as a
pattern, but I often find the best/standard way to indent such
calls in Python to be inconclusive.  I'm open to suggestions here.

Addresses #39
More precise date filter argument parsing

Explicitly try to parse the date against supported format strings
instead of just checking string length.

Raise a ``ValueError`` if we encounter unsupported formats.

Addresses #39
Baker comments, docstrings

Addresses #39
Clean up unused imports, use explicit imports