Allow utf8_idpb() failures to be recognized by outputting 0

Modify function to output zero instead leaving pointer at same start loc.
This way, you can differentiate if an error happens by testing 'if (ptr)'
instead of having function silently fail on a non-workable unicode value.
Reuse u2utf8_copyn() in function u2utf8_copy()
Reuse utf8_idpb() in function u2utf8_strcpy(), return NULL if error.
forgot a bracket after the if - oops - found during compile time
Exclude collaboration code if you aren't building it in

Unable to compile and test code due to forced requirement of libzeromq.
Wrapped a whole bunch of code in ifdef to exclude if you don't have it.
Need to include appended zero when running u2utf8_copy()
Merge pull request #841 from JoesCat/master

changing collab into an option instead of forced requirement