Fix Gc::collect() so it actually works.

Used to use a service call, and so would only
work in a procedure context. However since conservative
stack scanning was implemented, the gc could be invoked
by a plain old function call at any point in any pthread,
so I changed the implementation and removed the service call.

This may make Mark's tests on Slackware with clang work
although it hides the known bug, rather than fixing it.
A similar hack, adding a manual collector call, in the build
system source code may have the same effect there although
I haven't implemented that yet.

There is definitely a bug, at least it is known now that
the number of roots is increasing, so something is not being
unrooted which should be, although that isn't causing the
segfault it's at least some kind of clue.