Refactoring, split Scheduler.reserve.

Move knowledge about target_type to Reservation class for better encapsulation.
Make reserve more readable by extracting helper methods.