Cleanup/3.x/core client impl

Package cleanup
Introduced interfaces

Big number of changes causes by moving classes, so a lot of imports on classes changed. 
I thought about that one. But in the rest of the package, the client side functionality is bundled in a package 'client'. And.. this package contains more than requests, also principal and other objects. 

I don't like .client.client, but at least the naming is consistent.