Remove unnecessary traces
Changes in preparation for new routing scheme

Aim is to keep easy backwards compatibility with current system...
Add ability to prevent a request from flushing

Also added support in EmptyResult, just use new EmptyResult(true)
and no flush will occur
Don't inline this method, output code is much cleaner when not inlined
Macros-and-Metadata-powered controllers and routing, finally!

This is a huge commit, and has been a long time coming... New stuff includes:

- Routing powered by `@:route( "/page/$pageName/" )` metadata

	- Works based on splitting the URI into parts `uri.split("/")`
	- Can capture and parts beginning with "$" into a variable
	- Can require a certain HTTP method: `@:route( "contact/", POST )`
	- Wildcards are supported `@:route("/pages/*")`
	- Valid arguments for your method:
		- String, Int, Float, Bool
		- rest:Array<String>
		- args:{ someGet:String, somePost:Int }
	- Works on any instance method, does not have to be public or named a certain way
	- Guaranteed that other instance methods are not going to be called through
	  Reflection hacking
	- Leading / Trailing slashes are pretty much ignored, so `@:route("pages")` is
	  effectively the same as `@:route("/pages/")`.

- Every controller has an `execute()` function which returns `Surprise<ActionResult,HttpError>`

	- `execute()` automatically reads the route info and params from the context
	- it matches the routes in top-down order, and the first match, it executes
	- it catches any errors and returns a Failure
	- your action can return anything, and it will be wrapped in `Surprise<ActionResult,HttpError>`
	- if your action returns nothing, an `EmptyResult(true)` will be used, we are assuming you
	  are writing output manually and do not want to flush a result.
	- if a matching action is found, but the GET/POST data you entered was not valid, a
	  "400 Bad Request" error will be returned.
	- if no matching action is found, a "404 Page Not Found" error will be returned
	- `execute()` is generated for each controller using a build macro, and uses hardly
	  any runtime magic, the generated code is all very simple if/elseif statements that
	  check the route parts.  The only Reflection/Metadata usage is to read a single
	  integer for the current action so we know what the return type is and can wrap
	  it appropriately.

- Easy subrouting: `@:route("/pages/*") var pages:PagesController`

	- translates to "@:route("/pages/*") function execute_pages() return (new PagesController())

This caused several changes to UfrontApplication, but I made a copy of the old code and
left it in DispatchApplication/DispatchController. I'm convinced nobody other than me is
using these so I'm tempted to deprecate them ASAP before I end up supporting them long term.
Get rid of unnecessary cast
Don't launch build macro when in macro context