Clean up and modernise core::char and add Char trait