Be more conservative with what we expose to remoting APIs
Change the way logging in APIs occur so they will work from CLI tasks better

Basically we're limiting what we expose to remoting APIs and requests, showing
only a MessageList, a ContentDirectory, and the APIs themselves.  Then we can
expose those same things into our UFTaskSet classes, and use dependency injection
in those in the same way.

The MessageList class was an attempt to find a way that ufTrace, ufLog etc can
work seamlessly for both the "LogHandler" scenario (save till end of request, write
to browser or file) and the "CLI" scenario (print immediately, maybe write to file
also).  I tried to do it as an abstract, but only classes work with injection.