Replaced the shared signature cache by instance-local ones

NOTE: This change breaks the current implementation, as it replaces the designated initializer without making the new one public.