Add support for using AssertJ assertions

The second [attempt](http://code.google.com/p/awaitility/issues/detail?id=17) to add AssertJ/FEST Assert assertion support to Awaitility. Two years ago it was technically possible with proxy call, but due to complex and fragile changes required in FEST Assert I abandoned that idea. This time I used lambda expressions which simplify the passing of Runnable/Callable classes. With the new `AssertionCondition` it is possible to do:

    await().untilPass(() -> Assertions.assertThat(personRepository.size()).isEqualTo(6));

I had to use different name to not confuse (e.g. Groovy Closures) with `until(Callable<Boolean>)`. `await unit pass assertion` sounds quite logically for be, but maybe you will have some better idea (pass -> passes?).

The best think is that everything was possible to implement in the way that is still compatible with Java 1.5. Only client has to use Java 8 to benefit with lambda expressions (although plain anonymous Runnable class can be also used).

I added the new module `awaitility-java8` which requires Java 8 to put there tests. No new jar is generated. If you think it would be a problem to require Java 8 to build the whole project (although in Java 1.5 compatibility mode) I can try to rework Maven configuration to compile and run tests from `awaitility-java8` module only in Java 8 environments.

Btw, adding a new module I changed Maven configuration a little bit.