Remove @contents array from InternalApp

The InternalApp had a `@contents` array, but as far as I can tell, it only ever contained the `@top_slot`. This removes the array, and just delegates `#contents` to the top slot. It also pulls creating the top_slot out of the `#eval_block` method, and into its own method, called from `#setup_gui`, since it's part of the setup required in order to eval the block, but not part of evaling the block.

I think this makes for a much more transparent setup. The app's contents *are* the top_slot's contents. It also cleans up our specs a lot, since we don't have to differentiate between the app's contents and the top_slot's contents.

Did I miss anything?
the top_slot should be the only one ever calling the add_child method. All others should call those methods of slots, otherwise I consider it a bug.

E.g. imo we could get rid of this method entirely if we integrate some special handling for top_slot.. maybe.