Fix print_something() support again, add unit tests

If you have `var x:Date`, you can implement your own print function:

	function print_x() return DateTools.format(x, "...");

Unit tests for simple and complex behaviour. Seems okay-ish...
Fixes to DetoxLayout
Remove dtxDebug
Uncomment parts of a test
Set partial variables from call-site in parent template

Done in a pretty nice way, any variables from the parent template are found,
and the updates are added to the setter.  So every time the parent variable is set,
the partial variable is updated accordingly.  Can work with complex expressions too.

Also cleaned up some code, more reliable parsing of partials before the rest of the code,
and not parsing the children of a partial declaration.  Before we were getting some partial
variables also declared in the parent template etc, not any more.

As a result of these changes, partials must now be declared on the top level, which is good practice anyway.
Remove debug output
join support for Loop

Let's you add join html/text between each item, with optional different
html for the final join, and optional html to be used after the final item.

Let's you turn a list [1,2,3,4] into

1 and 2 and 3 and finally 4!!

with join " and ", finalJoin " and finally ", and afterJoin "!!"
Better cloneNode(), doesn't break when escaping quotation marks inside attributes
Changes to fit with new Loop.hx (now parses in loop itself to items)
Support loops from inside widgets. Will create partials as necessary.

Currently partially tested, passing on JS and Neko.  1 Failure on CPP but mostly working.

More tests required... and hopefully figure out a way to not require type="String" attribute
Get macro to infer the type of the loop, so you don't have to explicitly define it

Thanks Juraj for the tip: https://groups.google.com/d/msg/haxelang/nZJ1U2hrsl0/mUdBymOnbioJ

Part of this change is also getting loops to work with iterables OR iterators,
so that the for="x in 0...10" will work as expected.

Added a few more unit tests while we're at it...
Fix for uncaught exception with widgets/automap on CPP
Fix to detect StdTypes.Int as opposed to Int on CPP targets.

Small whitespace changes also
Push metadata to child classes
Don't forget to test these...
Add typed findItem() for WidgetLoop
Add ability to manually type a loop, rather than infer it from a for expr

Also handle partials and loops that need to be inserted into a table, so placeholder
<div> doesn't get inserted into <tr> etc, because this breaks on JS.  No unit tests
for this yet...
Merge branch 'master' into abstractsupport

Conflicts:
	src/dtx/DetoxLayout.hx
	src/dtx/XMLWrapper.hx
	src/dtx/widget/Loop.hx
	src/dtx/widget/WidgetTools.hx
	test/LoopTest.hx
	test/WidgetTest.hx
353 tests passing... all basic (non widget/loop) behaviour should now work with abstracts :D