* spinned off 'require-clean', 'is_file_in'
* ResourceConverters: `runAt` instead of isXXX flags
* build.done: [], `runPostBuildTasks` run in turn after whole build is done
* BundleFile.hasChanged reset a start of each build, remains for done()
* Bundle: `all_depsVars` renamed to `allModule_depsVars`, added real `all_depsVars`
BundleBuilder.buildBundle :
* promise always returns bb instance
* runs done() async tasks serially, passing (err, bb) or (err, bb, callback) or compatibility (true/false) with older grunt-urequire / urequire-cli
* specs for done() tasks, then (bb)->, failing catch(err)
BundleBuilder
  - handling exceptions with promises
  - runAfterBuildTasks always
    - callback call version also deals (When.race) with possible returned promise.
  - watch improved

Build:
   - `Build::calcRequireJsConfig()
     - calculates relative paths of local deps to dstPath, blends with another config, merges shims
     - uses `bundle.dependencies.paths.override` always have precedence, then blended, then locals
   - default automatic template.banner (true/function/hash)
   - added `dstMainFilename`, `dstMainFilepath`, `dstMainRealpath`, `dstRealpath`
   - added hasChanged, hasErrors, hasChangedErrors, changedErrorFiles, errors for last build
   - refactored to `combine` and other responsibilities previously on bundle.
   - report:
     - prints files in error in bundle / build & total errors
     - Less verbose on errors & report only 1st time

Bundle:
  - errorFiles `bundle.files` in error,
  - Resaving _combinedTemp always when missing and build.count > 1
  - automatic loading package.json / bower.json
  - improved Bundle::xxx_depVars handling with locals, node, bundle deps etc
 - `Bundle.inferMain()` becomes `Bundle.ensureMain(force=true)`
  - calls `build.finishBuild()` even if no files changed

FileResource / Module:
 - unique rootExports only
 - knows if original AST has really changed.
 - `dstFilenamesSaved` when saved, `clean()` deletes em all, `bundle.dstFilenames` has them all

templates:
 - @globalSelector in both module & almond
 - Almond template: __nodeRequire __throwMissing & __throwExcluded
 - `exportRootCheck` works for non `script` for real

urequire: addBBExecuted(bb) & findBBExecutedBefore(bb) & findBBExecutedLast(bb)

Dependency
 - isLocal (_isInLocals) looks at all paths (bower, package etc)
 - isNode looks at `dependencies.paths.node` (not yet implemented;-(
 - correct translation of './' to './index' if it exists

config:
 - dependencies: paths:
   - added `dependencies: paths: {ovverride, node, bower}`, bower --list paths invoked and paths results cached
   - fill deps paths at start only on first build
 - deprecate 'bundle.dependencies.exports.bundle' in favor of 'bundle.dependencies.imports'
 - deprecate 'bundle.dependencies.exports.root' in favor of 'bundle.dependencies.rootExports'
 - deprecate `buiild.done` in favor of `buiild.afterBuild`
 - deprecate `build.exportsRoot` in favor of 'rootExports.runtimes'
 - deprecate `build.noRootExports` in favor of 'rootExports.ignore'
 - added 'rootExports.noConflict'
 - dependenciesBindingsBlender uses `arrayizeUniqueReversingUnshifter` instead of `arrayizeUniquePusher`
 - blendConfigs: unique cfgs added once only
 - added `build.target`, defaults to @target in grunt
 - `build.watch` is options, properly blended

* project dependencies 'fsp', replaced `./paths/upath` with `upath`

* upath ravamped & spec-ed:
  * `defaultExt` has `ignoredExt` to cater for `.min` / `.dev` extensions
  * normalizeSafe deals correctly with './'
  * trimExt accepts null ext
  * changeExt accepts `ext` or `.ext`