Reimplementing much of the DefaultPromise methods
Optimizations:
1) Avoiding to call 'synchronized' in tryComplete and in tryAwait
2) Implementing blocking by using an optimized latch so no blocking ops for non-blockers
3) Reducing method size of isCompleted to be cheaper to inline
4) 'result' to use Try.get instead of patmat
Merge pull request #2508 from viktorklang/wip-removing-synchronization-from-DefaultPromise-2.10-√

Reimplementing blocking awaiting for Futures so only the blockers have t...