Fix PBX parse example in documentation

* The start offset was wrong.
* Filled in ... for clarity.
Fix offset of visit_*_end

The visit_dict_end and visit_array_end visitors were getting
called with the scanner pointing at the closing bracket ('}'
or ']').  This change puts the scanner just after the
closing bracket.  This adds some uniformity (strings put the
scanner just after the closing quote, for example) and fixes
some problem I thought of a while ago but can't recall now.
Factor out mmap into Misc.c b_map_file_by_path

Factoring out the function makes the calling code shorter
and makes the code reusable.  When we port to Windows (or
possibly to OS X using mach_vm) it will be easier to change
the implementation.