Add #timepoints yielding timepoints within the start and max time
Replace inline iteration with SearchCondition#timepoints
Limit the public interfaces of a SearchCondition
SearchCondition takes over the search tasks

Copy module methods of Resource over to SearchCondition as instance methods
Send `available_at` message to the search_condition instead
Remove unused methods from Resource
Add #next_available that returns next allocatable schedule
Replace #available_at call with #next_available
Hide all other methods of SearchCondition