facets: support for dots in keys and any nesting level

This fixes the case in which keys include dots. There is also support
for any nesting level and keys representing array values can be
placed anywhere in the dotted notation.

considering
obj = {
    club: {
        name: 'Golf Pros',
        'honorific.members': [
          {name: {firstname: "Tiger", lastname: "Woods"}},
          {name: {firstname: "Thomas", lastname: "Bjorn"}}
    }
}

you can now add facets as 'club.honorific.members.name.lastname'
added qunit for testing
added unit tests for getvalue using dotted notation
Correctly loop Array of elements, see a not working example below

for (var thing in sdata.facets["somefacet"]["terms"]) { console.log(thing); }
0
1
2
3
4
5
find
findFirst
new option: filter, same as es's filter
fixing merge conflict