feat(api): create Plook class and a utility toolbelt

In a first try to create an API for standardized package discovery
inside Plook, a Plook class has been created with a utility toolbelt.
chore(jshint): desconsider Promise as a predefined var

Promise isn't in Node.js yet, so we have to disable it in order for
the JSHint tests pass.
Ref jshint/jshint#1747
chore(jscs): create JSCS configuration
chore(jshint): ignore node_modules/ dir
feat(plook): instantiate class if calling as a function
fix(plook): throw when lookup with no package name
test(plook): initial tests
fix(plook): make findURLs() properly resolve its promise

After the lookup was made, findURLs() was not resolving with the
possible found URLs.
chore(devDependencies): include sinon for tests
chore(test): create global for sinon and bower

To allow easier suite setup.
chore(jshint): add predefined vars in test env

Set 'bower', 'sinon' and 'afterEach' as globals as well
test(plook): fully test .lookup() and .findURLs()
fix(plook): ensure .get() actually works

The promise's .map() method rejects when a promise for an array
has at least one item that fails. As this is almost all the cases (we'll
trigger 2 requests for every file), then using it is not a good deal.
test(plook): add tests for .get()

Also enhance .findURLs() suite
test(utils): add tests for everything
fix(tests): don't redefine sinon and bower

To make JSHint happier, let's not "redefine" sinon and bower
vars.
refactor(plook): standardize error objects
refactor(server): make use of the Plook class
feat(*): export Plook or Express server

If we're the main module, we'll export the Express server;
otherwise, we'll export the Plook class
Merge branch 'api'