added deep put/get capability.  using dot-notated paths, you can
traverse using string keys to form or read structs or numeric keys to
form or read arrays.

examples:
```cfml
doc.put("a",1);
doc.put("b.1",2);
doc.put("b.2.a",3);
doc.put("b.2.b",4);

doc.get("a");     // returns 1
doc.get("b");     // returns an array
doc.get("b.2");   // returns a struct
doc.get("b.2.b"); // returns 4
```