Added 'pre' and 'post' setup blocks

* easier for gems to add files, because `@files` is just an empty array at this point
* no default setup is done, so `sdk_version` and so on can still be set by the user
* pre_setup / setup / post_setup are a good trifecta for a compiler :smiley:

```ruby
# in your gem
Motion::Project::App.pre_setup do |app|
  Dir.glob(File.join(File.dirname(__FILE__), 'lib/**/*.rb')).each do |file|
    app.files << file
  end

  # other settings as well, it's still a "good ol' setup block"
  app.libs += ['/usr/lib/libicucore.dylib', '/usr/lib/libc++.dylib']
  app.frameworks += ['CFNetwork', 'Security', 'SystemConfiguration']
  app.weak_frameworks += ['Accounts', 'Social']
end
```

calling `config` here is what causes some troubles, because `config` ends up determining sdk and api versions.  For instance, on android, I need to set `app.api_version = '19'`, otherwise I get an error about the "L" SDK not being installed.

Which is fine until I include a gem, which calls `setup`, which calls `config`, and goes looking for the `api_version`.  My Rakefile's `setup` hasn't been called, so it detects the wrong one, and errors out.