serialize any objects as json, falling back to an object containing toString and error message if the object is not properly serializable
make js for displaying gui more consistent, using JSON.stringify rather than FormatJSON since the latter doesn't do quotes right, and stringifying activity tags
service failure detector is an enricher, in example
change JSON serialization used by REST so that it looks at fields, ignoring getters, because getters can cause infinite loops,
and fix a couple other places where JSON serialization was dodgy (streams, apidoc)
include UndeclaredThrowable as an exception which is not interesting, and whose nested exception should be preferred for the purpose of informing the user of root causes
Force UNIX-style line endings on shell scripts
Refactors tests to work around IntelliJ IDEA build issues
This closes #166
HTTP API entity helpers
Support for timeout parameter in the /server/shutdown request
Shutdown effector in BrooklynNode
Brooklyn node safe STOP effectors

  * Stop but leave apps running
  * Stop apps and stop node
Refuse stop of Brooklyn Node if there are child apps

(possibly mirrored child apps added manually)
Support HTTP responses with empty body.
This closes #159
use `code-textarea` style for all yaml/json textareas, monospace font, slightly smaller
support for catching errors when resolving values, and test where time-limited access is passed in as a config value and retrieved
introduce WeaklyPresent in maybe using weak references, and use that for streams so that large streams attached to tasks don't cause leaks;
also use a strongly typed tag for effector tasks, including entity information
big change to garbage collection, doing a much better job of keeping a balanced history of tasks -- the primary limit is now on tag,
each tag is allowed to have by default 50 tasks; coupled with new EffectorCalllTag for entity+effector_name, this means we keep
effector calls much longer. (the overall defaults have been increased also, for history to 30 days, and a new per-entity limit of 1000 tasks.)

other miscellaneous cleanup to tasks also, fixing the leak for DST internal jobs, and simplifying how task-completion callbacks work
(so attempting to get() a result in a callback will not deadlock!)
use an internal proxy on tasks so that sub-tasks submitted by the internal job show up as submitted by their parent,
making it easier to GC the right things and show the right things in the dashboard;
also tweak how sub-tasks are cleaned up.  works nicely in gui now!