use BasicObject for proxies implementation

Inheriting from ```BasicObject``` when using proxy design pattern makes a more 'realistic' object, answering to the delegated object's ```#class```, ```#is_a?``` etc.

It allows this code for example: ```Message.where(user_id: User.using('db-1').admins)``` which didn't work before (especially with ```Squeel``` gem which yelled for inability to visit ```Octopus::RelationProxy```).

This also makes some of the method overrides like ```#respond_to?``` unnecessary (```BasicObject``` doesn't implement ```respond_to?``` so ```method_missing``` is called).