Initial work on APIv2

A mass-commit of all the work I've been slowly putting together for the new API. Currently it is broken. To test the EZTV provider, run test.js