added 3dsx support

This adds 3dsx support
How is it a design problem? You can't just allocate possibly huge amounts of data without some way to catch allocation errors. `new` usually throws exceptions for that, but I figured since the check for nullptr is already there, I'd just suggest the closest solution to that.

Also: The issue with manually managing memory is indeed true. Should be a unique_ptr, I guess? (unique_ptr /does/ auto-delete, doesn't it?)