improvements for the `is` operator; implemented the type lifting rule in user-defined type classes
simple unit test and better documentation for the user defined type classes