Set explicit character positions in the ‘03’ example script

By default both characters appear on the left, overlapping.  It will
make the example script more useful to actually separate the
characters onto different sides of the screen.  Then we can use it to
test, for example, that character images remain on screen the correct
amount of time.
Create a stub for the new Drawable module
Load the Drawable module as part of LNVL

We want to load this module after the Graphics module in case we need
to use any rendering utilities from that.  But we also want to load it
before the modules Opcode, Scene, Character, or any other which may
create or modify Drawable objects.
Define ‘image’ and ‘location’ properties for Drawable objects

This will add two properties for Drawables that we will always need:
an actual image to draw, and the coordinates indicating where on
screen to draw.  Unlike with other classes we allow the parameters to
the constructor to override properties that have default nil values,
such as the Drawable.image property.  That will let us pass in
pre-created Image objects to the constructor, which should be useful
when we start to use Drawables to represent character avatars, for
example.  We also do not intend for script authors to create Drawable
objects outside of the engine code, so we do not need to apply the
same level of ‘safety’ when it comes to modifying properties via the
constructor that we do with other classes.
Teach Drawable objects to draw themselves to screen
Support tostring() for Drawable objects to improve debugging
Provide methods to get the width and height of Drawable images

The names will be intentionally the same as the names LÖVE uses for
its Image objects so that we can more easily replace uses of Image
with Drawable throughout LNVL.
Store character images as Drawable objects

This will use our Drawable class for character images instead of
LÖVE’s Image class.  It is easy to change the two places in the
Character code where we assign images to construct Drawable objects.
But we will also need to make both the ‘draw-character’ opcode and the
‘draw-image’ instruction aware of Drawables.  We can change the opcode
so that it works only with Drawables.  However, we will not be able to
do the same with the ‘draw-image’ instruction because it will continue
to receive Image objects, such as when we draw scene backgrounds.
Implement Drawable:setPosition() and use it when drawing characters

Currently the ‘draw-character’ opcode is responsible for interpreting
the meaning of LNVL.Position values in terms of how they convert to
actual, absolute screen coordinates.  We will move this logic into the
Drawable class so that moving forward we can make it possible to
position all Drawables relative to each other, not just characters.
This will be useful in the future when implementing such features as
adding arbitrary images to the foreground of scenes.

Since we are going to move that positioning logic into Drawable we
also have a chance to simplify the code and commentary for the
‘draw-character’ opcode processor.
Teach Drawable objects to have borders and draw them

This will add optional border color and size properties to Drawable
objects so that we can render them on screen with surrounding borders
if desired.  This will help is unify more of the drawing logic that is
currently spread throughout the engine.
Fix bug where ‘draw-image’ instruction crashed on border data

Now that Drawables take care of rendering borders we need to
restructure the logic in the ‘draw-image’ instruction so that it sets
the relevant properties on the Drawable object for its border.  Then
we can remove the code that draws the border from ‘draw-image’ and let
the Drawable handle all of that.
Document the new restriction on ‘draw-image’ regarding borders

The ‘image’ property can now be either an Image object or a Drawable
object.  Furthermore, the instruction now only draws borders if
‘image’ is a Drawable.  The documentation needs to reflect this.
Merge branch 'drawable-objects'

* drawable-objects:
  Document the new restriction on ‘draw-image’ regarding borders
  Fix bug where ‘draw-image’ instruction crashed on border data
  Teach Drawable objects to have borders and draw them
  Implement Drawable:setPosition() and use it when drawing characters
  Store character images as Drawable objects
  Provide methods to get the width and height of Drawable images
  Support tostring() for Drawable objects to improve debugging
  Teach Drawable objects to draw themselves to screen
  Define ‘image’ and ‘location’ properties for Drawable objects
  Load the Drawable module as part of LNVL
  Create a stub for the new Drawable module
  Set explicit character positions in the ‘03’ example script