Use vector<RCP<Basic>> to avoid the s2b() hack
Improve the documentation
Test is_canonical()
Subs: std::vector<RCP<const Basic>>  ->  vec_basic

This is equivalent, but simplifies the code a bit.