modify to support multiple grammars, add fmpxmllayout grammar

The approach taken was to convert the execute() method to route based on grammar and to move all of the parsing into grammar specific parsing methods. Also added an array property to validate that a supported grammar has been specified. fmxmlresult is the default, to support backward compatibility.
I think it would be nice to offer two convenience wrapper methods which don't require any argument

```
public function useLayoutGrammar ()
{
    return $this->setGrammar(self::FMPXMLLAYOUT_GRAMMAR);
}

public function useResultsetGrammar ()
{
    return $this->setGrammar(self::FMRESULTSET_GRAMMAR);
}
```

Also, fyi, there is no space between the method name and the opening paren. Method example from php-fig

```
<?php
namespace Vendor\Package;

class ClassName
{
    public function fooBarBaz($arg1, &$arg2, $arg3 = [])
    {
        // method body
    }
}

```