Work around Mono GetDrives() bug

The results of System.IO.DriveInfo.GetDrives() is incorrect on my
system, returning a single entry with a blank name.

This commit works around the issue by catching this condition when
running on *nix platforms, and returning a single drive called root.

*nix like operating systems are less reliant on the concept of a drive
anyway, so this allows Pash to continue operation and still represent
the cwd.
Merge branch 'getdriveshack' of https://github.com/b333z/Pash2 into b333z-getdriveshack

# By Andrew Barnes
# Via Andrew Barnes
* 'getdriveshack' of https://github.com/b333z/Pash2:
  Work around Mono GetDrives() bug
Remove unused variable
FORMATTING: Format to default VS settings
REFACTOR: Extract Method `MonoHasBug11923`
TEST: Check for Mono bug 11923

See https://bugzilla.xamarin.com/show_bug.cgi?id=11923
Remove `IsLinux` from Mono bug check

Because Mono works on Windows, too.
Merge pull request #95 from JayBazuzi/b333z-getdriveshack

Work around Mono bug #11923 - GetDrives
Execute a simple script block.
Remove terms `_statement_flow_control_statement` and `_statement_pipeline` from grammar

Since they don't really do anything.
Implement `return` for scriptblocks. Now this works:

    PASH> & { return ; 1 } ; 2
    2

I used an exception to abort the current script block. I'd rather avoid
using a exceptions in normal program flow, but I didn't see a
straightforward way to handle the way `return` can pop so much execution
state.

One downside is that the AST Visitor dispatcher, which uses reflection to
invoke the handler, unwraps and rethrows the exception. Ugly.
Merge pull request #97 from JayBazuzi/return

execute a script block, and `return`