Add fstruct module for functional struct updates.
Support nested access and updates in fstruct.
Start using fstruct in updates.

Fixes #10, apparently.

No more double-eval update monstrosity.