[WIP] core refactoring for better usage and performance

Single interface for invocations, better structure, no more copy-paste interceptors for functions, properties, methods. 

As a result, new type of joinpoints are available now: before/after function execution. Aspect's advice can accept now multiple different joinpoints and use this for keeping logic clear without duplication.