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.