[WIP] Implement subs()

This PR might require to simply stop using `Teuchos::RCP`, because we want to do things like this:
```
RCP<Symbol> self = rcp_const_cast<Symbol>(rcp(this));
```
And pass `self` around. This works with our own `RCP`, because we store the refcount in the class itself, but can't work with `Teuchos::RCP`.