Initial JSR-107 implementation (ISPN-2639, ISPN-2766, ISPN-2767, ISPN-2824 and ISPN-2856)

Initial pull request for https://issues.jboss.org/browse/ISPN-2639 and the following subtasks:
- https://issues.jboss.org/browse/ISPN-2766
- https://issues.jboss.org/browse/ISPN-2767
- https://issues.jboss.org/browse/ISPN-2824
- https://issues.jboss.org/browse/ISPN-2856

With this, version 0.6 TCK passes 100% (annotations will be included once https://issues.jboss.org/browse/ISPN-2855 is sorted, but some fixes are required in the spec annotations...).

Other parts of the spec not yet implemented are asynchronous listeners, which are not tested by the spec so far.

I've tried to add as much as javadoc as possible explaining the rationale behind the design decisions. If something is not clear, let me know and I can add more comments.

I will squash some of the commits once the review is completed.