Mark and sweep - part 3

This pull request fixed test cases when compilation flag ``GC_MARK_AND_SWEEP`` is enabled. It also removed call site GC roots (and then there is a limitation that garbage collection won't work during a function call). 

Currently ProtoTest is green both with compilation flag ``GC_REFERENCE_COUNTING`` and ``GC_MARK_AND_SWEEP``. 

More details about mark and sweep GC could be refer to [this google document] (https://docs.google.com/a/adsk-oss.com/document/d/151suZwdM3hn-xo_AjOgrG8h7IlpvGKOy69qPw8Sd2qU/edit#). 

@junmendoza , please help to review the change. Thanks.
Because callsite still handles the objects the same way, Is my assumption correct that When Marksweep is on, refcount is also working along with it?