[#1686] Make Promise.waitAll().get(long, TimeUnit) respect timeout and throw an exception

Original pull request here: https://github.com/playframework/play1/pull/608#issuecomment-21868646

Ticket: http://play.lighthouseapp.com/projects/57987-play-framework/tickets/1686-promisewaitallgetlong-timeunit-doesnt-respect-timeout

I changed code to be more readable and added a test.