Majot refactoring to improve code quality

* chessengine methods now return promises which make the main module's
code much more readable.
* A new module utilities is factored out of all the modules which
contains utility methods (duh!)
* Engine startup code is much more robust and small now(uses the
is-running module).
* A chessengine test module has been added.
* Documentation has been updated according to the other changes.
Bumping version to 0.2.15