Fix an issue preventing stream from working correctly when called via project

Basically, description() now relies on firstAvailablePropertyIndex being
set correctly, and this is done in Object::init(file). If an object is
not created via the plugin system, Object::init(file) is never called.

Also, description is now called as part of smartCopy, which is of course
called when project() const is called on a timeVarying transform.
Simplify Transform::fromAlgorithm slightly