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
```

`pre_setup` uses the same `@setup_blocks` as `setup`, but doesn't call `config.setup` at the end.