Improved marshaling of interface "Marshaler"

The Marshal did not work for pointers to interface Marshaller. I added the test cases, which had experienced this problem.
Since you are adjusting the code what if we move this Marshaler type check about the nil code and then you can remove the redundant check?