Use AspectJ weaving instead of JDK/cglib proxies for AOP
This eliminates issues in edge cases like calling annotated methods from
inside the same class. The use of AopContext.currentProxy() and the
exposeProxy setting are no longer necessary for these cases.