Add ontology type query support to speck engine

Given an OBO file with an SO copy, the speck engine now also supports queries for types and relationships in its DSL. For instance, it is now possible to simply write
```
expect(node:appears_as_child_of_supertype("transcript")).should_be(true)
```
instead of
```
 expect(node:appears_as_child_of_type("mRNA")
   or node:appears_as_child_of_type("tRNA")
   or node:appears_as_child_of_type("snRNA")
   or node:appears_as_child_of_type("snoRNA")
   or node:appears_as_child_of_type("rRNA")
   or node:appears_as_child_of_type("ncRNA")).should_be(true)
```
as these types are in a _is_a_ relationship to the transcript type. Saves authors a lot of redundant work, and also does not hard-code ontology information which should instead be read from the ontology definition in the OBO.

More additions:
- `string:is_a()` and `string:part_of()` returning true/false
- `feature_node:has_child_of_supertype()`

Also, `expect()` can no longer be called outside of an aspect definition, which caused an assertion to fail.