Add BuildTools, previously used in Detox.

I'll have to think about adding these to a separate library at some
point.  Perhaps they'd be good with tink_macros?
Allow task running to trace output live, rather than just cache it
Major changes to Object/DBMacros. Validation,Permissions,ClientDS

Validation changes include:

 * validate() function, runs before saving. Throws error if not valid
 * validate_*() functions automatically get checked with validate()
 * validate_*() functions get created by @:validate(_ > 10) style metadata
 * Null checks are automatically added to validate()
 * validationErrors:StringMap<String> - key=fieldName, value=error

Permission changes include:

 * checkAuthRead() - override to perform a check
 * checkAuthWrite() - override to perform a check
 * currently, before save() checkAuthWrite() is checked, error thrown otherwise
 * there is no read() check yet, but we should add this to a custom manager, and run on returned objects before returning.

ClientDS:

 * on the client, don't just throw an error for save(), delete() - use ClientDS to save/delete
 * on the client, update() and insert() are just shortcuts to save()
Fix time measurement on task runner.  Don't print output at the end

(because we're using live tracing instead)
Major updates for ClientDS.

All code now compiles.  Whether it works or not is another matter