Extract InternalApp and specs to their own classes

This separates InternalApp from App as @jasonrclark [suggested](https://github.com/shoes/shoes4/issues/754#issuecomment-45631221) in #754. It separates the specs as well. Separating the specs illustrated a couple of cases where we weren't actually testing what we thought we were (as in the clear specs), and also some problems with our spec setup, which are now fixed. No more `instance_variable_get`, either!

I have marked a few specs that need to be updated in the process of tackling #756.

I took a stab at fixing the fullscreen specs on OS X (see #397). The specs are not fixed, but I believe that fullscreen is now working, at least `samples/simple_fullscreen.rb` works for me on OS X 10.9. I'm thinking that there's something about stubbing the event loop swallows/blocks the fullscreen changes in specs. Please try `samples/simple_fullscreen.rb` on your platform and verify that it still works (or now works :grin:).