Fix scanning of strings and arrays

Two issues:

* Only / or * was expected after an initial /.  Strings in
  PBX can begin with /.

* The scanner was not skipping the closing ) for arrays.
Tests for PBX scanner
Assert CRTP subclasses override methods
Scan quoted strings

Also test the scanner