Add support for escaping param string entries

Might as well do this while I'm thinking about it...
Layers: add functions for getting/setting layer properties via param string

Just like we do with selections, param strings provide an incredibly
easy way to detect changes to a layer.  The central processor will use
this function to detect layer state changes and create Undo entries
accordingly.
pdParamString: new function for removing parameters from the string
License file: include licenses for plugins distributed in binary format
Undo/Redo: new checkpoint system for capturing non-destructive edits

Non-destructive edits are difficult to handle from an Undo/Redo
standpoint.  Ignoring them in the Undo/Redo engine messes with expected
causality, but adding every non-destructive edit to the stack results in
many wasteful and redundant entries.

PD's solution to the problem is a (rather elegant, if I may say so)
checkpoint system.  Checkpoints are automatically triggered by any
action that goes through PD's central processor.  If a non-destructive
edit is about to be applied to the image, all preceding non-destructive
edits will be coalesced into a single Undo/Redo point and added to the
stack.

With this commit, the checkpoint system is further extended.  Now,
external functions can initiate their own checkpoints independent of the
central processor.  Custom checkpoints are required when the user
changes program state in a way that circumvents the central processor,
specifically:

- Changing the active layer
- Switching to another open image

In these cases, it is beneficial to store all non-destructive edits in
their respective Undo/Redo stack, prior to initiating the requested
change.

Note that custom checkpoints interact nicely with the central processor,
so if the user does something like switch active layers (custom
checkpoint), apply a destructive edit (standard checkpoint), then
switches to another image (custom checkpoint), the central processor
will handle all custom checkpoints just fine.

I looked at simply integrating actions like "switch active image" into
PD's central processor, but that creates a host of ugly interactions
during macro recording, so I prefer this approach.