Fix endian detection for OSX thanks to girving
Use forwarding in 'choice' and add several small utility methods