Add programmatic API

It is exported as gemini/api node module and allows to use same
commands as a CLI.
Suites now also have unique ids.
Report results in runner

Now runner.run will resolve to of the following status strings:

- `success` - all tests passed;
- `error` - a non-critical error occurred during tests.
- `testsFailure` (for Tester) - no errors occurred, but some tests
  failed.

This changes should greatly simplify CLI code, related to exiting with
appropriate code.
Use public api in CLI
Add programmatic API

It is exported as gemini/api node module and allows to use same
commands as a CLI.