Advanced Formatting/Output

These commits introduce a new internal framework that cares about formatting and outputting data.
Before, Out-Default simply wrote everything as its string representation
Now, Format-Table and Format-List are implemented and work as they do in Powershell. So it's finally possible to visualize and inspect different objects.

Please take a look at the different commit messages for further details and the underlying architecture. It is explained mostly in the first commit message. If you have any questions or want some more information, let me know.

```
PASH /tmp> $a = new-object psobject -property @{foo="test1"; bar="test2"}
PASH /tmp> $a,$a          

foo                                                bar
---                                                ---
test1                                              test2
test1                                              test2

PASH /tmp>  
```