Fix in process/builders.py, self.master.data.updates.completeBuildRequests was called twice
Don't fake methods that shouldn't be there (#597)
Fix some failing tests, convert branch to codebase parameter
Use inlineCallbacks in Timed.activate
Add missing codebase properties

Also, sourcestamp['codebase'] is a string, not a dict.
Call through to fake method, remove unused deferred call

Remove the firstBuildDuration parameter, it's not used anywhere.
Make use of the faked addBuildsetForSourceStampWithDefaults method,
so that the tests may use that instead of the hand-rolled events list.
Also, refactor some tests.
defer.returnValue(None) is the same as "return"
Prefer 'codebases' over 'branch' parameter
Don't import config
Use kwargs.pop instead of .get+del
defer.inlineCallbacks ftw
Allow getCodebaseDict to return a deferred.

Also sched.activate() might become async. Adjust tests accordingly.
Move createAbsoluteSourceStamps logic to mixin
Refactor some mildly confusing ifs
Add tests for AbsoluteSourceStampsMixin

Also, remove 3 tests from test_schedulers_basic. The desired
functionality is implemented and tested in the mixin.
Move AbsoluteSourceStampMixin up the inheritance chain
Add a method to start a build with collected changes

This can be used by the startBuild implementations. If the scheduler
has collected and classified any changes, it will use
`addBuildsetForChanges` and flush the change classifications. If there
are no changes it will use `addBuildsetForSourceStampsWithDefaults`.
If `onlyIfChanged` was given and there are no important changes, the
method will return without triggering any builds. Collected changes
won't be flushed from the database.
Fix onlyIfChanged, adjust Periodic
Fix NightlyTriggerable
Move onlyIfChanged to Timed scheduler base class.