Better buildspec

Improved buildSpec. It's now pretty stable and can be used for creating readable, descriptive source code for morphs, without imperatively creating everything. Right now it is used for the window switcher and the SubserverViewer.

Use  it with

```js
spec = morph.buildSpec();
copy = lively.morphic.Morph.fromSpec(spec);
```

For the source code version use

```js
morph.printBuildSpec();
```

Please review.