Add support for umbrella projects in mix

This adds support for umbrella projects as detailed in #667.

Notable changes from the proposal is that a task must be explicitly set as `@recursive true` if it is to run for the sub projects - `false` is the default value.

It would be great if you can test this functionality as much as possible and report any bugs you find.

EDIT:
Also note that there is no support for umbrella projects as dependencies. This will be handled in a separate PR.