Remove stale functions

Most of the direct computation machinery is not needed for NFA
implementation.
Refactor memory

Merge active group indices into memory, since we always operate on
both at the same time.
Generalize action when changing states

Original implementation had fixed action on trasition: append character
to the end of the cuurent word. In order to properly support backreferences,
this action has been generalized into separate type that now allow adding
char, opening and closing group, referencing existing group and doing
nothing at all, which indicates transition to final accepting state.
Accomodate generalized actions in enumerator

Since transition action has been generalized, enumerator needs some tweaks
to properly utilize new capabilities.

Major chages are:
  * genNextState function which handles transition actions
  * removal of ad-hoc group support using checkChar function

Most of the documentation has also been updated to reflect new functionality
and behavior of code.
Add group support to parser

Group support has been achieved by:

  * adding new nodes Group and GroupRef to regexp AST
  * removing ad-hoc group creation with explicit construct
  * adding backreference support for \1 .. \9
Split Enumerator and Parser modules

Both modules have been split into user-facing part and internal part.
This change does not affect user-consumable API.

Split has been done to better support unit testing. By using internal
module, we'll be able to unit test private functions along with public
facing ones.
Add Hspec unit tests

Most of the internal and public functions is now properly tested.
Fix parser documentation

Group implementation also affected regex AST, produced by one of the
examples in documentation.
Fix group capture over backreference

This commit fixes brokeness that could be seen by enumerating expressions
where group capture encapsulates backreference. Example of broken
expression would be "(a)(\\1)\\2", which would produce "aa" instead of
"aaa".