use 'decree' module for arguments validation and disambiguation
more tests
tests update and changes in errors delivering

since using the 'decree' module for arguments resolving, we don't
need to test legality of arguments, as the module does it for us
(and throws appropriate errors).
So redundant tests were removed.

Errors are thrown whenever there is a programmatic error which can
be determined before the requested operation is done. For example,
when toBuffer is called with type 'jpog', we can immediately tell
it's a programmer error; we don't need to wait for the operation
to be executed. So we throw immediately.
Operational errors, on the other hand, are passed to callbacks.

More info at: https://www.joyent.com/developers/node/design/errors

All errors are Error objects.
add more tests for 'batch'