Implement subs()

Now one can do things like:
```
In [1]: from csympy import *

In [2]: var("x y z")
Out[2]: (x, y, z)

In [3]: (x**2+y+z).subs(x, 0)
Out[3]: y + z

In [4]: (x**2+y+z).subs({y: -z, x: 2})
Out[4]: 4
```

There does not seem to be any slowdown on benchmarks.

In this PR, I disabled the usage of `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 `euchos::RCP`, as manifested by the Travis failures in 005a13f. As such, we only test that `CSymPy` compiles with `Teuchos::RCP` (to make sure our API is 100% compatible), but don't run any tests. All tests are run with our own RCP implementation.