Robustly get an object's own property keys (strings and symbols), including non-enumerables when possible