Conditional compilation controlled on type level
Let we have a container format using a bunch of other formats. And let's assumme thet we don't need most of them.

I mean, look at pcap.ksy. It refers lots of formats relevant only in network context. If I want analyse only USB captures with my program, I don't need them all.

Let's make some definitions. We can treat a set of all the types as a DAG (directed acyclic graph): a type is a vertex, if a type refers some type there is an edge from the referer to referee. For the purposes of this issue we call ```B``` a subDAG of a DAG ```A``` if and only if ```B≠A ^ (V(A-B) ∩ V(B) = ∅)``` where ```V(A)``` gives the set of vertices of the graph  ```A```.

The idea is to provide an an additional argument to the compiler, which should refer a config file. In that file we should be able to write rules to select the types which are:
* to be included with all their subDAGs, and everything which is not explicitly included is excluded.
* to be excluded with their subDAGs
* to be included, but their subDAGs are to excluded;

Then the compiler should act according to the rules. When a type is excluded the compiler should insert a code calling the callback in that branch instead of the code parsing the type and not to generate the imports and not to compile the type and its subDAGs. The callback should be programmer-defined. The default one should be to throw an exception or finish the program if there is no exceptions.