Schedulers (merge of pull #199)

Manual merge of https://github.com/Netflix/RxJava/pull/199 by @mairbek plus the following changes:

- made some classes non-public so they don't become part of the published API (if we find they have value in the public API we can make them so but once published it's hard to remove them so I'd rather keep them implementation details until then)
- consolidated ExecutorScheduler and ScheduledExecutorScheduler
- made ExecutorScheduler use a system-wide ScheduledExecutorScheduler for handling delayed events when only an Executor is available
- made the IOThreadPool use a non-bounded cached thread-pool 

Next step from here is to review all operator implementations and add the Scheduler overloads.