Refactor sockets code.

 * Replicate old FFI plugin based sockets code as a new VM
   module that integrates with the new primitives mechanism.
 * Update all TW code including basic tests to run via
   these new primitives.
 * Note: Need to make sockets optional.
Remove unnecessary code from CLI interface.
Add simple string search function to library.

 * Add 'funcSubstring' to String class.
Changes to sockets to support telnet server.

 * Various changes to the sockets primitives and supporting
   TW source required by the telnet server functionality.
 * Note: still need to bring many of the primitive functions
   into line with the new approach of returning an array with
   the result and the error code.
Initial work towards memory pools with GC.

 * Introduce a single unit memory pool for the object
   headers. Each unit is a fixed size, the pools are
   organised as a linked list of fixed size buckets,
   allocated on demand.
 * GC is implemented by doing a visit pass on all root
   objects, and all locked objects. Then adding anything
   not referenced to a fixed size cyclic buffer. During
   allocation, free objects are pulled from this list
   first.
 * Note: very slow at the moment, GC relies on the heavy
   hashing code, should be re-factored as a priority.
   Now that the objects are stored in a known place,
   it should be possible to do visitor pattern without
   the need for a separate visited table.
Switch off old hash based visitor pattern.

 * Instead of using a hash as the visited flag mechanism,
   fully enable the use of a flag bit on the object.