Support mrecarrays in DataFrame constructor

This is intended as a fix for #3478. ~~Sorry I do not have the time to write rigorous tests.~~