Serialize/deserialize Logger objects to JSON.

To be used by model operators when reporting
information to present to end users.
Add "flush records to stream" option to Logger.

Now, in addition to storing log records, each one is
flushed to an ostream you specify as soon as it is
recorded. If you request it, the logger will take
ownership of the stream.

This is useful for debugging purposes where crashes
may prevent later inspection of the log.

Finally, this fixes an issue with smtkInfoMacro
(it was marking the severity as DEBUG, not INFO).
Use the smtkInfoMacro in CGM operators.

This way messages from the operator have a chance
at being sent over network connections to be read
by an actual user instead of /dev/null.
Changes to Remus bridge connection class.

The current strategy for handling mesh types and bridge names
is too fragile and often results in problems where worker names
don't match submitted jobs.

Change the set of bridge names (which was really Remus "input type"
strings) to a map from bridge names (now actually Remus worker names)
to their Remus input type string. This way, multiple workers (say
at different sites) can have the same Remus mesh type.

This also switches the way many JSON RPC requests are created, from
unsafe string concatenation to the more secure cJSON nodes that will
escape strings like bridge names.

Finally, this moves a lot debug output that was using cerr/cout to
use the smtk log macros (smtkInfoMacro, smtkDebugMacro, etc.).
These logs can be streamed to a file for debugging.
Flush unit test log to a file.
Make OperatorResult instances include log messages.

Now the base Operator class inspects it's owning model
Manager's logger just before and after the actual
operation takes place. If any records were added, then
those are stored in the "log" item of the OperatorResult
attribute, making them available for presentation to
users who might be wondering what went wrong...
Add a log to each SMTK model Manager instance.

This log should be used to hold all informational,
debug, and error messages related to operator
execution and other changes to model state.
Have ExportJSON::createRPCRequest take param type.

Now you can specify whether the "params" object of
a JSON-RPC request should be an Array or an Object
as allowed by the v2.0 spec.
Have model-worker use a Logger and flush to file.

The smtk-model-worker now creates its model manager
immediately upon execution and writes messages to
a Logger object that is flushed to a file.
This makes debugging easier when using the Remus
server to launch workers since otherwise their
output is unavailable.
Allow changing the RemusRPCWorker's model manager.

This way, processes owning the worker can force the worker
to use an existing model manager.
Accept the worker name specified...

... don't insist on a machine-generated worker name.
Make the "log" item of OperatorResult extensible.

This way operator subclasses can add hints and other information
to help applications present log messages that the Operator base
class appends to the "log" item.

For instance, an operator might:

    smtkInfoMacro(this->log(), "Ambiguous edge orientation.")
    result->findAsString("log")->append(
      "{\"ambiguous-edge\":\"" + badEdgeUUID.toString() + "\"}");

so that an application could highlight the edge while displaying
the log messages.
Fix Remus bridge.

Properly initialize the Remus bridge's operator-attribute system
so that no "universal" operators are inherited.

Also, simplify some JSON-RPC code by using `ExportJSON::createRPCRequest`.
Change how RemusBridgeConnection reports file types.

Also, fix the unitRemusBridgeConnection test by specifying
"ctest" as the site for the worker.
Add some Python-wrappable log-flushers; clean up.

Remove some warnings and add a few helper methods to
the Logger so that messages can be redirected to files
and the console from within Python.
Merge pull request #12 from vibraphone/logger-serialization

Logger serialization