Switch from using Make to using Tup

I prefer to use Tup as my build system now, so personal preference is
really the only reason for this change.
Create a Tupfile that will build HTML documentation

We tell Git to ignore everything in the HTML docs directory except for
the Tupfile, which generates HTML from the Markdown documents that are
in the ‘docs/’ directory.  We require the program Pandoc to create the
HTML output.
Merge branch 'tupfiles'

* tupfiles:
  Create a Tupfile that will build HTML documentation
  Switch from using Make to using Tup
Change the global LNVL table into a module

In retrospect I realize that I poorly designed the class organization
of the engine, doing things with metatables that was not necessary,
especially in the branch with code for characters.  This patch is the
first step to cleaning up that organization by making LNVL a proper
Lua module.
Simplify the metatable code for the LNVL.Scene class

It turns out I made things more complicated than necessary.  Whoops.
A re-reading of the great “Programming in Lua 2nd Edition” book
highlighted my over-engineered stupidity.
Define a default value for LNVL.Scene.fullscreen

We set this property in ‘examples/01-Simple.lua’ but never mention or
define it in the constructor for the LNVL.Scene class.
Merge branch 'restructure-class-and-module'

* restructure-class-and-module:
  Define a default value for LNVL.Scene.fullscreen
  Simplify the metatable code for the LNVL.Scene class
  Change the global LNVL table into a module
Add the start of the ClampedArray source code

This patch contains only a large comment explaining how the class
works and provides an example of how we will use it.
Implement LNVL.ClampedArray()
Fix a typo in the main comment block for LNVL.ClampedArray

We use parentheses with the constructor and not curly braces.
Require the ClampedArray class in the main LNVL module
Merge branch 'clamped-arrays'

* clamped-arrays:
  Require the ClampedArray class in the main LNVL module
  Fix a typo in the main comment block for LNVL.ClampedArray
  Implement LNVL.ClampedArray()
  Add the start of the ClampedArray source code
Remove the extra definition of LNVL.Character.__index()

The code for LNVL.Character accidentally has two definitions for the
__index() metamethod.  The second one uses the
LNVL.possiblyGetClassMethod() utility which commit 7532cdd8 removes.
So we need to delete that function call and replace it with a simple
rawget() instead.  That lets us access the special ‘currentDialog’
property while still falling back on LNVL.Character.

Conflicts:
	src/character.lua
Require theCharacter class from the main LNVL module
Rewrite the example of clamped arrays

From the moment I began to use them in code it became obvious that I
poorly designed the ClampedArray class.  This first patch rewrites the
example comment showing how to use the new class that I will be
implementing in the comming patches.
Rework the constructor of ClampedArray for its new purpose

This patch adds a hidden property that we will use to track the index
of the first nil element that has no more non-nil elements after it.
Update ClampedArray.__index() for the new class logic
Update the comment of ClampedArray.__index() to reflect its behavior

It claimed to return a nil value under certain circumstances which was
not true.
Rewrite ‘__newindex()’ for the new behavior of ClampedArray

The metatable method now ensures that we keep an accurate track of the
index of the first nil value in the array.
Implement the length operator for ClampedArray objects