Setup size of backgroundsurface depending on rerender distance.

When animated_tiles is switched off, the background will be rendered
into a static image and only renewed, when the player has moved a certain
distance specified in 'movedistance_to_rerender'.
Use this variable as well for the dimensions of the background surface.

Fixes #333
Merge pull request #338 from stefanbeller/master

Fixes #333
Enumerate joystick buttons
Use ACCEPT key to interact with NPCs
Add joystick support for NPC interaction

To prevent some cases of input overlapping, joystick button locking
(similar to keyboard key locking) has been added to the InputManager.
Use JOY_CANCEL to close menus
Use Accept key/button to trigger nearby events

* In checkNPCInteraction(), only lock the Accept key if an NPC is found.
* Fix a crash when trying to execute NULL events.
Use Accept key/button to pick up nearby loot
Attempt to fix broken saved HP/MP values

Saved HP/MP values need to be checked for validity *after* item bonuses are
applied, since items can boost the maximum HP/MP values.
Don't set respawn state to true when initializing the Avatar

Otherwise, saved HP/MP values are broken because StatBlock::recalc() is
triggered when the player respawns.
Merge pull request #341 from dorkster/bugfixes

Attempt to fix broken saved HP/MP values
Fix transform_duration being ignored for transform powers
Switch effects and passive powers when transforming
Merge branch 'bugfixes' of github.com:dorkster/flare-engine into bugfixes
Merge pull request #344 from dorkster/bugfixes

Fix Transform power bugs
Merge pull request #339 from dorkster/joystick

Usage of Accept key/button for object interaction
Unified key/joystick bindings & mouse emulation

These two features ended up going together. The MAIN1 key needs to behave
differently based on its context (combat vs menus). Mouse emulation gives a
way to handle both of these contexts. Basically, mouse emulation is turned
on when in menus and off when in combat. All of this combined means that
Flare is now be played entirely with a joystick.

In addition, GameState* menu keyboard shortcuts have been removed. There
were conflicts with mouse emulation and these shortcuts. Not to mention
the amount of menu navigation with these keys was limited (couldn't operate
the Configuration menu) and made the code messy. By having only the mouse
cursor (emulated or otherwise) operate on widgets, we keep things
consistent.

Finally, a bug in GameStateConfig where joysticks could be enabled without
picking a joystick from the list was fixed.

Known issues:
* The mouse can still be used when in mouse emulation mode. However, the
cursor is hidden and placed in the bottom-right to prevent it from
interfering with combat. I didn't want to lock the mouse in that corner
because it's not good for people that play in windowed mode. This is the
best compromise for this that I could come up with.
Don't hide cursor when mouse emulation is off
Fix elemental resists/weaknesses for enemies

By having a vulnerable_base stat, the vulnerable_* values given in enemy
definition files won't be overwritten when effect bonuses are applied.
Fix transform bugs

* Fixes creature powers being saved to the save file.
* Fixes temporary transformations being saved as if they were permanent.
* Fixes a crash caused by trying to copy Effects between the player and the
transformed creature. This involved adding an overloaded '=' operator to
EffectManager and executing clearEffects() when transforming. This means that
hero effects aren't saved for when they untransform.
* Fixes item bonuses to base stats (Phys/Ment/Off/Def) not being applied when
untransforming.