Reduce memory footprint of actors, add strategy that optimized for actors

Proposed changes and additions:
1. Reduce 40 bytes per actor instance by replacing `val` by `def` in `toEffect` definition.
2. Add strategy that more efficient in submitting actors for execution and handling of uncatched errors fix for Scala's ForkJoinPool while it cannot be used for evaluation of values.
3. Add better handling of uncaught errors and InterruptedException: now they rethown properly + added sending of errors to UncaughtExceptionHandler of thread that by default prints stack trace. 
4. Add creation on demand for default strategy, thread factory and executor services to minimize usage of resources.
5. Use default thread factory that creates deamon threads for a naive strategy.
I cannot find efficient implementation for deduplication of that code (without use of reflection).