Calculate implicit TypeTags for leaf types in TypeConverter companion object constructor, rather than in targetTypeTag method. Therefore they are initialized all exactly once and there is no risk of race conditions, and no need to acquire a lock whenever they are referenced. Synchronize many methods which construct type tags on demand. Fixes #364.