Make library asynchronous with Promises.

* From now methods return bluebird Promises.
* Added support for custom `root` dir option (to specify when stop traversal).
* Small simplifications & fixes.
Update npm on Travis CI before installing.
Remove unstable version of Node from Travis tests.