Support for Tab Expansion

These commits introduce tab expansion for Pash.

It includes a nice user interface, expansion for filesystem contents, cmdlets, cmdlet parameters, functions, and variables.

However, it is currently only available on non-windows platforms. Why? Because it works together with the "getline.cs" user interface which was introduced for basic stuff like history, arrow key support, etc, as these functionality is not available in a console on non-windows platforms.

The user interface works by using the Console buffer.

As the tab expansion is a really nice feature that improves Pash's usability as a shell significantly, I would favor to use the getline.cs CLI for all platforms, also Windows. However, that's a different discussion and can easily be enabled with another patch.

Couldn't we use the same `DefaultRunspace` hack we intend to use for conversions? Unless there's no way of getting to providers from a runspace.