Fix invalid memory read in Syck extension

This could cause a segfault because an invalid pointer would be read.
Don't use stringstream because it leaks with rb_raise

rb_raise uses setjmp which doesn't run destructors properly. This results
the stringstream leaking. rb_raise already supports printf style arguments
so we can use that here.
Add CPPFLAGS handling properly

Before the implementation wasn't complete, which is why it got removed
in the first place. This adds it back properly.
Better error handling for getting current working directory

Also unifies the style for the other Errno handling.
Fix WeakRef constructor and double initialization of WeakRef class

The class was setup twice, actually creating two WeakRef classes. This
is because the ontology already sets up the WeakRef class. Therefore the
additional logic can be removed.
Merge branch 'master' into concurrent_gc