More idiomatic sbt key usage

Re-factored some keys and introduced others so that they align more closely with sbt's Compile and Test configurations.

One significant change is that resourceManaged is no longer overloaded to identify the target/public* folders. Instead resourceManaged has reverted back to its actual meaning of being a place where resources are generated in the context of Assets and TestAssets. In its place, a new key named "public" has been introduced to signify where public assets are targeted.

Similarly keys for source generation have been introduced.

WebJar extraction has been changed so that it is considered as a sourceGenerator as well as being an asset task. Various source file plugins may thus lean on the sourceDirectories key to provide both managed and unmanaged paths that are able to be considered by their tool. For example the LESS plugin is now able to configure its path with an array of directories from sourceDirectories. PathMappings are also easily constructed given the sourceDirectories key.