Web Replay: build fix for !ENABLE(WEB_REPLAY).
Web Replay: reduce edit overhead of adding new inputs.

We now use macrology to generate most of the encode method
disambiguation cases in JSONEncoderContext. This piggybacks on
the macro used by ReplayInputTypes, but it had to be modified
somewhat to only enumerate non-template classes.

To make disambiguation work with AutoMemoized specializations, we
create the AutoMemoizedBase class. It has a virtual encode()
method that calls the right specialized InputCoder<T>::encode method.

Lastly, header includes for all input types was moved to
AllInputTypes.h since header includes can't be generated by the
preprocessor easily.
Web Replay: improve capture and replay of page closing. 
Closes #389.

WebPage now goes through NavigationProxy when trying to close an
entire page. This allows distinguishing between deterministic and
nondeterministic page closes, and tracking of any subsequent
beforeunload DOM events.

If the embedder wants to close the page when we are capturing,
then we end capturing unconditionally if shouldClose() returns
true. If it returns false, then we capture this unsuccessful
close as an event loop input to be simulated later.

If the embedder wants to close the page when we are replaying,
then we cancel playback and close the page if the page close
request is not being simulated (i.e., the live user requested it
during the replay, not the simulated user during the
capture). Otherwise, we continue replay and follow the normal
steps to determine whether to close the page or not.
Web Replay: store and load AutoMemoized inputs using AtomicString names.

Closes #404.