Added extended object expression formatter

Allows for invoking custom C# scripts, to provide a richer and much more
flexible formatting.

The new formatter is now used as the default formatter within
ObjectExpressionFormatter.ToString(), so you can leverage its power
without changing existing code.