Optimize view paths caching for plugins.

Closes #2047
Merge pull request #3356 from ADmad/2.5-view-paths

Optimize view paths caching for plugins.
Allow setting only default layout without specifying template in email config.

Closes #3336
Merge pull request #3373 from ADmad/2.5-cakeemail

Allow setting only default layout without specifying template in email c...
update composer.json
Merge pull request #3376 from php-engineer/master-update-composer

update composer.json
Implemented json serialize for the time library
Added __debugInfo to the Time class
Merge pull request #3380 from cakephp/3.0-time-tweaks

3.0 time tweaks
Update docs for file().

Mention that relative paths will be prepended with APP.

Refs #3370
Reject file paths containing `..`.

Paths containing `..` are generally up to no good. Throw an exception,
as developers can use realpath() if they really need to get relative
paths.

Fixes #3370
Merge branch 'master' into 2.5
Merge branch '2.5' into 2.6
Merge remote-tracking branch 'origin/2.6' into 3.0

Conflicts:
	composer.json
	src/Network/Email/Email.php
	tests/TestCase/Utility/DebuggerTest.php
Remove superfluous docblock notes
Merge pull request #3384 from bcrowe/3.0-remove-file-doc

3.0 - Remove superfluous docblock notes
Implement strict subcommands.

Strict subcommands allow Tasks to be hidden from the CLI. It also allows
public methods on shell classes to be hidden from the CLI. Both are
beneficial when the developer does not want to expose every
public method/task as a CLI command.

Refs #3325
Refactor code.
Handle subcommands in fewer places.

Rework Shell::runCommand() so it doesn't require parameters to be
duplicated. This has the side benefit of making option parsing have
a simpler interface.

Update related tests, and code. CompletionShell had a silly parser
definition that I've corrected.

If a command's option parser fails, the error is now shown before the
help message. Hopefully this gives the end user some idea on what they
need to change when trying to call the shell.

This change continues to keep sketchy logic around for task's being
called through execute(). I'm going to address this in my next set of
changes.
Switch tasks from using execute() to using main().

This change unifies Tasks and Shells. It removes an un-necessary
convention that has little benefit but causes additional human mental
energy to remember. Removing it makes refactoring a shell into a task
easier.