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

`post_setup` on the other hand uses a new ivar, since the Rakefile `setup` needs to be called in between the pre and post setup blocks.

Ok, so all that said, it wouldn't be any trouble to use a more explicit `@pre_setup = []` array of blocks.  There's no advantage other than being explicit, though.