Basic support for PSSnapIns

These commits introduce basic support for PSSnapIns. It focuses on snapins that only
add cmdlets to Pash. In the course of this support I made some small changes
and bugfixes to the SessionStateScope stuff. For example, it can check and compare items
correctly instead of relying on their name only.
Snapin handling was moved from the CommandManager to SessionStateGlobal. The way the default
snapins are loaded was refactored to be more usable and general, s.t. the functionailty can
be used for adding snapins in general.

What does currently not work is:
* Load Snapins in the Windows default way (by looking in the registry for installed snapins).
  It currently only works by passing paths to a snapin.
* Support for provider snapins. Although The basic support was implemented, s.t. it *could*
  work in general, it isnÄt tested in any way. Some known missing features for provider support
  are marked in "TODO:"s with the #providerSupport tag.
Merge pull request #184 from sburnicki/snapin_support

Basic support for PSSnapIns
Pash can be started with commands to be executed

Pash can now be used to simply excute commands (and therefore scripts), so it is not only usable in interactive mode.
Proper tests were added to test the behavior of FullHost.

Some internal method were added to be able to test the interactive input properly.
Added some tests for the PashConsole itself

Notice that they take a while because of the long startup times of Pash.
Changed tests to work on windows. Some fixes

The tests needed some changes to work properly on windows.
FullHost was changed to be more robust in uncommon environments (Console
with redirected stdin/stdout) and to work aso if the calling assembly
was shadow-copied (when loading the config script).
Merge pull request #185 from sburnicki/start_with_script

Start Pash with commands as arguments
Cleanup. Moved Ctrl+C handling to UI.

All "Console" related stuff is now in the LocalHostUserInterface class, where it belongs.
The rest of the application should be independent from the Console class now, s.t. the
user interface is completeley exchangable.
As Ctrl+C handling should be possible and directly handled by the user interface, some
changes in other classes have been made in order to access the currently running pipeline
from the user interface an stop it.
This behavior is better than throwing an exception in "ReadLine", because each call to ReadLine
would need to implement the "stop pipeline" behavior on its own.

Last but not least, code was removed that was duplicate/not in use/in comments and unnecessary.
null objects shouldn't return any string when being printed
Added PashConsole.Tests to nunit project
Merge pull request #186 from sburnicki/refactoring

Cleanup, Refactoring, Minor fixes
Reworked Pipeline processing and error handling

Error streams of pipelines now work correctly.
MergeUnclaimedPreviousResult flag was implemented and used with the out-default command.
Doing so, nearly all output is now printed by out-default, as intended.
Only if the initial pipeline fails, the FullHost has to print remaining errors.

Also, the $error variable is now used set to provide occured errors in Pash.

For error streams to work correctly, I reworked output/input/error stream redirection
in general. The new way doesn't require as much copying as the old way.

The PipelineProcessor has been generally changed as it didn't implement the command
lifecycle as specified by Microsoft.
For details about the new lifecycle, take a look at http://msdn.microsoft.com/en-us/library/ms714429(v=vs.85).aspx.

Existing tests have been modified according to the changes, new tests will follow in a separate commit.
There is still some refactoring necessary which will also follow in a separate commit/merge.
    Upgrade to Mono 3.2.5 on Travis.

    Per [1] it's easier to do this if we ask Travis to run on a Mac host.

    1: http://stackoverflow.com/questions/16751772/how-do-i-use-travis-ci-with-c-sharp-or-f/16751773#16751773
Merge pull request #190 from Pash-Project/Travis-Mac5

Upgrade to Mono 3.2.5 on Travis.
TargetFrameworkVersion=4.5
Get Irony from NuGet
Upgrade to Mono 3.2.7 on Travis
Merge pull request #192 from Pash-Project/irony-nuget3

Get Irony from NuGet instead of checking it in.
Removed direct I/O. Added not yet working tests.

Removed more direct I/O from FullHost, s.t. printing is handled by Out-Default.
Improved Ou-Default's way of writing errors.

Added working tests that check the error variable.
Added tests that check the correct processing of the pipeline command phases and correct error handling.
These tests do not work, yet.

Modified TestHost to have access to the last used runspace (e.g. to get variables).
Added not yet working test for clearing .
VisitPipelineExpression uses Pipeline. Fixes.

The lifecycle of commands in a pipeline was changed, otherwise it didn't make sense.
This means, a command has to run "EndProcessing" before the next command processes records.
Inserted comments on how the pieline is supposed to work: ProcessRecord() as soon as the previous command
writes to the pipeline.
Also, the ProcessRecord phase is only entered if there are input objects or the command is first in the pipeline.
This is how PS does it.

Modified tests to test and work properly. Also added tests for the desired pipeline behavior which isn't implemented, yet.
So these tests are currently ignored.

Fixed the possibility to clear the $error variable.
Some further fixes.
All tests work now und Unix.