Added .mli files for charset and hashset

- Made hashset an opaque type requiring some changes to code that used the fact
  that it is implemented as a hash table
- Added function to copy the epsilon transition table that doesn't depend on the
  underlying hashset implementation
- Updated code that copies the epsilon table to use the above function
Added .mli for Nfa
interface: Remove redundant declarations in mli files
interface: export all values from modules

To ensure reverse-compatibility of the API, export all values from
modules that now have interface files.
Merge pull request #1 from frenetic-lang/interface

Provide .mli files for Nfa, hashset and charset