Scraper is almost complete #7 #1

The general scraper class is almost complete, tested on WITS offer
demand as well as EMI data. iPython seems to spit the dummy a little
bit when dealing with the compressions and I still need to write
a lot of seed instances in the config but this is almost complete
enough to replace three files. EMIScraper, wits_scraper and nodal_demand
scrapers. Still need to write a lot of docstrings.

One caveat is that now a few edge cases are handled by string checking.
I'm not too concerned about this, but it does mean some of the code
has different control loops depending upon which string is parsed
which can make it more difficult to reason about.

Overall, I think this is a good addition.
Will need to lookm over the POCP/Wits5min scrapers as well
to see how they'll fit into all of this
Scraper Class Completed, Fixes #1 #7

The Scraper Class has been completed and should work across both
the WITS and the EMI website. Can be extended for ASX and the Fivemin Scraper
as well when I have a bit of time to look into this further.

Key points, the class works by providing a seed of information
which changes the pathway the scraper will hit.
As we're dealing with other peoples websites and cannot control them
this can get really messy.
Updated the config tempalte with all of the new seed information.

Not going to remove the old information just yet, want to be crystal clear
that nothing is going to break in the new class before making the switch over
Added a lot more documentation, fix for the demand files being saved to
crappy filenames
Hit recent seeds not the historic ones
Insertion query is fixed
Added unique constraints to the tables.

This should fix issues where multiple sources of data are attempting to be
loaded. This errors on a file by file basis so may cause issue when
daily and monthly data are added together...
Interface to DB queries have been written.

This is a major upgrade which Fixes #16 and Fixes #22.
can now use the "query_offer" method to automatically query from
the DB tables and return results as OfferFrames.

No need to worry about where the Data is coming from.
It should "just" work. I've specified that a date range is required or it
will try to query everything which is about 2GB of data per master table.
Not really sustainable.

I'm quite excited by this. I still need to write some documentation and
there is some very basic type checking.
Couple comments
Temperature DB Scraper for #2 has been added.

Still in quite a preliminary form, need to make it a bit more robust.
Still need to shift it towards a config style format, see if any code
is reusable with other scrapers. Possibly note as it is a HTML scraper not
a CSV downloader