Added FilesystemException to handle errors on local filesystem.
Added earlier permission checks in local filesystem before start download.
Merge pull request #1886 from phansys/local-fs-check

Added local filesystem permission checks for self-update
Merge remote-tracking branch 'simensen/installed-packages'
Clarify code a bit
Add root package to installed.json

Use case is embedding composer. It is extremely useful to know the package
information for the package that has has embedded Composer.

The root package will be added to the local repository (installed.json) as the
final step of the installation process.

Special handling was required to ensure that the root package did not ever end
up in the lock. Packages matching the root package name will be filtered from
both the required and dev required package lists.

The installer fixtures were updated to account for `--EXPECT-INSTALLED--`
similar to how the lock file handling is currently handled.

The mock installed filesystem repository was updated to allow the write method
to pass thru.

Two of the simpler tests, one for install, one for update, were updated to
account for the new installed behavior.

All tests pass.
Handle case where root package changes in some way

This will happen any time versions change for example.