lib: Added optional() function

This works in the same way as required() but does not throw errors
if the module was not found.
dependencies: Set `aws-sign` as optional dependency
dependencies: Set `hawk` as optional dependency
dependencies: Set `oauth-sign` as optional dependency
dependencies: Set `http-signature` as optional dependency
dependencies: Set `tunnel-agent` as optional dependency
dependencies: Set `form-data` as optional dependency
dependencies: Set `tough-cookie` as optional dependency
Added .npmignore file

Ignore the tests folder when packaging and publishing. The tests folder
is only used during development and doesn't have to be packaged in the
final tarball. This reduces the package size by another 148 kB.
TravisCI: Test with and without optional dependencies
Merge pull request #682 from Turbo87/optionals

Optional dependencies