Invalid keys and locations now throw errors synchronously and added more key restricitons

- Invalid keys and locations now throw errors synchronously
- Keys now must be valid Firebase child paths (include length and
invalid character restrictions)