Clean up the Logger SLOG functionality

As an artifact of the threads branch the logger was left in a state
where large number of sstream objects were being created on the heap
and not cleaned up until the end.

Worse, on some platforms (notably windows, but also some RHEL systems)
this could cause a seg-fault after main has returned and the program is
being unwound.
Merge branch 'master' of github.com:Grauniad/dev_tools
Create a vector search cache utility

A new class applies a regex search to a vector of strings and provides
methods for quickly find the next / previous match and testing whether
the current line is a match
Enhance screen with a less like interface

If a command would put more lines than would fit on the screen, the main
window will now drop into a primitive "less" mode
Terminal search  improvements

 - Can now turn of search highligting
 - Search cache is updated when lines are added to the buffer
Remove pointless Clear

Removed extra overhead in ScrollUp command
Fix memory leak in Searcher

Searcher was not clearing up it's dynamic memory - this has now been
fixed
Merge branch 'master' of github.com:Grauniad/dev_tools
Add initial commands class

Add an initial class which can be used to execute functions
based on an input string and a dynamically built map of commands
Add Tokens class

A new class has been added which can tokenize an input string into
arguments. Strings are handled if they are in double quotes
Add error reporting to the tokens class
Commands: Handle strings , fix memory corruption

Space separated strings can now be handled as arguments to commands.

Fixed an invalid read whilst tokenizing...
Remove needles tcl dependency
Fix buf with "make cover"

Previously a cover build would fail if a ddirectory did not export any
object files.

This has now been fixed...
Support splitting by a custom separator
Enhance tokens to be able to split string

Refactored the tokens class to support a simple split by character of
a string
Run multiple commands

The Commands class has been enhanced to support running multiple
commands from the same input, using a ';' separator
Add basic substituion function

The initial function to be used for alias substitution, currently it
only supports direct arg substitution (e.g ${1}).

It will be enhanced to add a group org args (e.g ${2*})
Extend Substitute with wild cards

The substitute command has been extended to handle wild cards allowing
the skeleton to specify it requries all remaining args. They can be
optionally quoted to allow grouping.
Commands now handles aliases

The command dispatcher object has been enhanced to handle user defined
aliases