Breaking up circular dependency.

Compiles but yields SegFault.
Heap corruption checks introduced into certain canary tests
Altering CallExtractor to take AnySharedPointer to improve type safety
TypeUnifier requires special handling for AutoFilter

This is needed because a pointer fixup is required before a call takes place on a nonpolymorphic type
Distinguish inputs in merge test.
TypeUnifier changes type_name of AutoFilter instance. Modified AutoPacketFactory and AutoMerge to use SelectTypeUnifier<T>::type.
Cleaning up else-filter declaration
Detemplatification of NewAutoFilter
Eliminating a hard-to-support duplication check