Fix segmentation fault when encoding deeply-nested arrays or hashes

This fixes #125 by ensuring that we always check the return value from
yajl_gen_* functions, and raise an exception when these functions return
anything but yajl_gen_status_ok.

In particular, we now will raise a Yajl::EncodeError when we attempt to encode
a deeply nested array or hash (with a depth > YAJL_MAX_DEPTH).

I didn't include any change to `YAJL_MAX_DEPTH` here, since I didn't want
to muddle the two issues (handling the error stats vs. bumping max depth),
but I'd be very in support of bumping it to 256.