BUG: set needs-init flag for unicode dtype

Python >= 3.3 does not like printing garbage unicode so printing
np.empty(x, 'U') can throw UnicodeDecode errors.
It is probably easier to just require initializing the dtype as a whole
instead of trying to catching the decode error on all places where it
might occur. Hopefully 0 is a valid code in all codes.
Closes gh-4994.