Added a new router binding handler.

The new router binding handler requires the installation of the router
as a plugin. The new handler simplifies the router binding process by
automatically hooking up the router by first looking for a router
property on the binding, second looking up a router property on the view
model and finally falling back to the root router. See the samples for
example usage.
Added buildLog config option so it can be configured from outside i.e. useful for running multiple optimization processes in same folder in parallel - otherwise you'll get an IO error
* Added support for following r.js options:
     [OptionList('i', "ignore", HelpText = "Ignore certain files or folders relative to the app path, separated by semicolon ;", Separator = ';')]
     public IList<string> Ignores { get; set; }

    [Option('o', "output", DefaultValue = "main-built.js", HelpText="Specify the name of the output combined and minified built file. Relative to the application source folder (-s option)")]
    public string OutputFileName { get; set; }

    [Option("buildFile", DefaultValue = "app.build.js", HelpText="Specify where the json configuration for r.js will be saved within this folder")]
    public string BuildFile { get; set; }

    [Option("mainEntry", DefaultValue = "main.js", HelpText = "Specify the main entry point file")]
    public string MainEntry { get; set; }

    [Option("name", DefaultValue = "main", HelpText = "Specify the module name")]
    public string ModuleName { get; set; }

    [Option("lang", Required = false, DefaultValue = "en", HelpText = "Specify the language to be replaced %LANG% paths on modules. You need to provide a custom configuration file first (-c) that has defined modules and we'll replace the %LANG% with this value in all the 'include' options of all the provided modules")]
    public string Lang { get; set; }

    [Option("preserveLicenseComments", DefaultValue = true, HelpText = "Specify false to remove the license comments")]
    public bool? PreserveLicenseComments { get; set; }

    [OptionList('r', "require", HelpText = "Default: main. Include extra requires separated by semicolon (;)", Separator = ';')]
    public IList<string> InsertRequire { get; set; }

    [OptionList('x', "exclude", HelpText = "Exclude certain modules i.e. if they were built before", Separator = ';')]
    public IList<string> Excludes { get; set; }

* %LANG% is very useful if you are targeting multi-language modules.
If used with -c yourConfigSource.js and in there define
modules: [{
  name: "main",
  include: [
    "durandal/*.js", //*.js from durandal folder only
    "main/**.js", //*.js from main folder and its sub-folders recursively
    "text!views/%LANG%/**.html", //*.html from i.e. views/en/*.html and its sub-folders recursively
  ],

* JSON can now be a javascript the same way r.js supports
i.e. modules.export = { JSON }
This is very useful b/c you won't get any errors while editing your configuration.js file in VS2012
Restored braces editor format
Merge remote-tracking branch 'upstream/master'

Conflicts:
	platforms/HTML/Samples/lib/require/r.js
	platforms/HTML/StarterKit/lib/require/r.js
	platforms/Microsoft.NET/Nuget/Durandal/content/Scripts/r.js
	platforms/Microsoft.NET/Optimizer/Optimizer/IO.cs
	skeletons/nuget/Durandal.Router/content/App/durandal/amd/r.js
	skeletons/nuget/Durandal.Transitions/content/App/durandal/amd/r.js
	skeletons/nuget/Durandal/content/App/durandal/amd/optimizer.exe
	skeletons/nuget/Durandal/content/App/durandal/amd/optimizer.pdb
	skeletons/nuget/Durandal/content/App/durandal/amd/r.js
	skeletons/vstemplate/DurandalTemplate/DurandalTemplate/App/durandal/amd/optimizer.exe
	skeletons/vstemplate/DurandalTemplate/DurandalTemplate/App/durandal/amd/optimizer.pdb
	skeletons/vstemplate/DurandalTemplate/DurandalTemplate/App/durandal/amd/r.js
Enabled Nuget Package restore
BREAKING CHANGES to Lifecycle

-viewAttached renamed to attachedToParent
-documentAttached renamed to compositionComplete
-documentDetached renamed to detachedFromDocument
-composition.current.completed renamed to composition.current.complete
-Changed router-based events for route complete scenarios. Now they are
router:navigation:attached-to-parent and
router:navigation:composition-complete
-composition context.triggerViewAttached renamed to triggerAttach
-renamed composition settings alwaysAttachView to alwaysTriggerAttach
Merge pull request #191 from dotnetwise/master

Modules, localization and more r.js options support
Composition now supports inline views and templated parts.

Moved the widget module's templated parts into the core composition
engine. Also, enabled the composition engine to support inlined views.
Moved getParts from widget to composition. Enhanced various APIs to
support the new capability. Extended the view composition sample to
demonstrate some new techniques.