huge overhaul

I've overhauled the core components and rewritten (almost) everything in
coffeescript. API/Service submodules now contain Client classes that
provide methods for the simplest possible access to MWS functionality.
Due to the core changes, these changes will break any existing code.
However, I tried to keep things as close as possible.
FBA Complex Updates

Almost done with the newer FBA module, finally. Will get this branch
working well enough to replace main branch asap.
Total rewrite + modifications

Updated just about everything and fixed any errors that were preventing
use of this branch. See the test folder for up to date samples.
Fix locale parameter of MWSClient  being ignored
Fix inconsisten behaviour of .getNext for NextToken calls
Fix passing  bool arguments with false values, ignored by default by MWSRequest
Fix MWSEnum ignoring members passed to the constructor
Add option to MWSClient.invoke, to use the HasNext instead of the NextToken presense for detecting nextToken
Add options to specify expected content-type, needed fot the GetReport where usually CSV data is returned
Reports API usually returns errors with 'text/plain' instead of 'text/xml', detect that case and parse it as XML
Implement Reports API with a simple client
Return errors similar to the Amazon API errors in the case of Wrong MD5 and unknown content
Use binary transfer encoding, prevents MD5 errors on reports which contain UTF-8 characters
Add simple reports client example
Add some example usages to the Reports Client
Specify explicitly xml2js version, as later version break compatibility
Fix GetMatchingProduct  parameters  in products client and  implement  GetMatchingProductForId
Products client was taking marketplaceIds as parameterlist, and all the calls require single marketplaceid
use this.md5Calc in MWSReques.attach , global one is not defined anyways :)
Pass a copy of invokeOptios to getNext call, for getNextToken calls, since invoke() modifies the options parameter