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

This is, to me, the most controversial change.  Previously in the `setup` block, the `app.files` has already been set, but this delays that until after all `setup` blocks are called.

The reason for the change is so that gems, using `pre_setup`, can append their files to `app.files`.  Right now they have to be inserted before the app files, otherwise dependencies get very messy... Ideally, to keep things identical, `app.files` would be set before the Rakefile's `setup` block is called.

Oh, shoot, I just realized that using `@pre_setup` blocks would allow for this... OK one sec I'm gonna do that change.