REFACTOR: Use LINQ

Thanks to LINQ, we no longer need to iterate through collections to
convert them to `Array`

Note that returning `Array` from this method is a little weird - usually
you'd return `object[]` or something. There's only one caller, and it
doesn't use the return value, so this code doesn't matter (yet).
TEST: Add a (disabled) test for Issue #6 - stackoverflow on unrecongized command
Remove an error check

I'm struggling to make sense of this code, and anything I can do to
simplify things will help.

I don't know of any cases where this check matters; unit tests all
pass. Let it go.
Remove an empty ctor.

No reason for it to exist.
FORMATTING: Remove a couple newlines.

Call me OCD.
REFACTOR: `IsAssignableFrom` extension method
REFACTOR: Make an extension method for dispatching to `AstVisitor`

This is really just syntactic sugar.
REFACTOR: Rename `processor` -> `pipelineProcessor`

To make it more obvious.
REFACTOR: Extract method `BuildPipelineProcessor`
BUG: Parse paths with colon

The `label` rule is missing from the language spec. I guessed how to
write it, but got it wrong. This caused the start of a path with a colon
to parse as a rule (wrong!).

Colons go at hte start of a label. Fixed.
Extension method `IEnumerable.ForEach()`

This is so useful, and using `ToList().ForEach()` all the time was
annoying.
REFACTOR: Extract Method `ConvertCommandElementToCommandParameter`
REFACTOR: LINQify the way we traverse the list of parameters.
Implement `CommandAst.ToString()`
Only execute scripts that end in `.ps1`