Implemented isSubmap, isSubmapBy, isProperSubMap, isProperSubmapBy

Based on pull request #55 by @isturdy.

Implementations of `isSubmapBy` and `isProperSubmapBy` made mutually recursive. This implementation is 25% faster than in `Data.Map`.

This pull request is partially unifiable with requests #53 and #54.