Rework exports config parsing

This is extensive work combining changes from 1.5.x and refinements
and re-implementations based on newer 2.0 data structures and
infrastructure.

Big ticket items:

* singly linked exportslist is replaced by a glist

* each export is part of a gsh_export and managed by the export manager

* export id searches are via cache and AVL tree

* export clients are a glist, formerly a fixed array

* New export syntax "export { ... client { ... } client { ...} }".
  This is the same function as the export_client from 1.5 but a cleaner
  syntax and parse/decode.

* extensive use of decode helpers to dedup code and make the if-then-else
  chain readable.

* General cleanup

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Rework exports permission checking per reworked export definitions

Note: This is most likely not bisectable with the exports config
parsing changes because structures etc. are intertwined.

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Fixup patches from 1.5.x for pseudofs lookup and junction support

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Rework rpc_execute exports access checking

Exports permission checking here is now just for V3 and friends.
Given the V4+ compound model, we defer those checks to the
compound processing loop.

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Update 1.5.x -> 2.0 porting doc

Marked as 'done' or 'passed' for things ported/reimplemented or
skipped over as irrelevant to 2.0

Signed-off-by: Jim Lieb <jlieb@panasas.com>
Replace exportslist fixed arrays with gsh_strdup

Allocate only the space we need, not the maximum we will ever see.

Signed-off-by: Jim Lieb <jlieb@panasas.com>