Improve and fix parts of the inline editor widget.

This adds some improvements to the widget, making it more useful to
consumers. A consumer can now get the button elements without having to
look in the DOM, and can also get the editing state. This helps with
making intelligent decisions involving the editor.

To improve the apparent responsiveness, the buttons no longer fade
in/out. This was fine to have for a while, but removing animation makes
the editor feel more snappy.

The editor also now forwards 'resize' events from the contained field to
the editor's element. This lets consumers see when autoSizeTextArea, or
a custom widget, has changed sizes, in order to do more intelligent
layout updates.

There was a bug with fading the pencil back in after editing was
completed. It was trying to fade to an opacity of 100, but really, it
should have faded to an opacity of 1.0. It looked like the pencil was
just instantly showing, because it was.
Support custom "end" prefixes for @blocktag.

@blocktag no longer hard-codes `end` as the prefix for the end tag. A
caller can pass `end_prefix="end_"` or similar to @blocktag, which is
useful when naming a function with underscores.

Decorators are expected to act differently depending on whether they're
called in `@decorator` form or `@decorator()` form. Rather than breaking
every single usage of @blocktag by requiring parens (since we now have
an optional argument), we have to do some checking of arguments at the
end to determine what to return. This is pretty harmless in this case,
but worth pointing out.