Use expression SFINAE to restrict archive/unarchive.
Implement schema-based querying.

It is now possible to launch schema queries. We got rid of the SCHEMA MANAGER,
as it was essentially doing nothing. Now SEARCH maintains the global schema
used for all query processing. Upon receiving segments from INGESTOR, RECEIVER
sends a copy of each segment schema to SEARCH, which then attempts to merge the
schema with its existing one. If it fails, there exists a global schema
conflict and the system currently aborts. Consequently, users must ensure
schema compatibility at the moment. We plan on failing more gracefull in the
future.

When SEARCH spawns a query, it first *resolves* the schema predicates in the
AST with its schema. This is similar to "compiling" the AST for fast event
evaluation during the candidate check. Under the hood, schema predicates get
exchanged with offset extractors to enable direct access of (nested) event
arguments.

There exists still a bug that prevents event deserialization. The type
information objects currently are not regular types and hence have no public
default contructor. As a result, deserializing events currently fails. We'll
fix this ASAP.