datastore: handle the []*Key type

Also added check for when trying to decode a nil *pb.Key

A key without a path is not a valid key. The case you are trying to cover should never happen. From a readability point of view, current change hints that you can pass a key proto with no path elements which is not accurate.