Replace the rod of striking with the iron rod.

In practice, nobody is interested in using a melee weapon that you need
to train Evocations for, so let's do something more interesting.

The iron rod has Scattershot, a level 6 Conjuration/Earth spell that
blasts the area in front of the player in a shotgun-like spread of
metal fragments.

In practice it throws ~eleven BEAM_FRAG projectiles each of which does
roughly half the damage of an iron shot; thus it is quite powerful at
close ranges against lightly armoured targets and disperses crowds
quite readily, but is fairly wimpy at long ranges and against heavily
armoured targets.

Range is six squares - one more than Iron Shot. Don't expect for it to
do much at that distance, though.

SPELL_MELEE is gone, as it's now completely useless.

Credit to mumra for the name and the original concept for this (which is
still floating around on an old branch, in fact).

Spread and pellet count of Scattershot increases with spellpower.

At high power, you may think of it as Super Scattershot.
Simplify a few things, and improve an algorithm

Use std::none_of rather than explicitly looping over demon_traits
in search of a match.

Use a range-based for loop for a few iterations over the player's spells.

Have is_memorised call you.has_spell, for which it is a synonym.  Make
the latter, and _get_spell_slot, use std::find.  Use is_memorised in
one location that essentially replicated the loop yet again.

Replace an ugly repeated array scan in _get_status_lights with a bitset.
It would be even nicer if we could statically initialise the bitset from
important_statuses rather than setting it each time we check status
lights.  Possibly an array<bool> or FixedVector<bool> would be faster
than bitset despite the increased size.
Split monster::search_spells, simplify.

Rename search_spells to search_slots and reimplement it with any_of.
Make search_spells into a wrapper that uses a predicate on spells rather
than slots, allowing things like "search_spells(is_unclean_spell)".
Replace bind2nd with bind.

The former (and ptr_fun, also removed) is deprecated.

Also replace one lambda with bind() in monster::has_spell_of_type.
Don't name an unused parameter.
Add a missing header.

It wasn't necessary for me with g++, but might as well be correct.
Changelog through 0.16-a0-2405-g490e8e2
Changelog tweaks
Data-ify form constructor parameters.
No longer require a terminator for random_choose.

And make it work better for types we might not want to copy.
random_choose_weighted is not affected.

Thanks to PleasingFungus for suggesting this change.
Maybe fix some conducts (9218, 9216)

Still a huge mess.
Fix inverted 'known' logic

beam.cc.......
Use a constant
Fix autoexplore chunk confusion (9094)

The stash tracker assumed that items with 0 freshness would rot
away shortly, but chunks no longer use a single freshness field.

Export a fake simulated freshness value to more-or-less mimic the
old behavior, from an external perspective.
Don't claim that items in shops rot away

In the stash tracker.

Hooray for corpse shops! :)
Fix a clang warning.

-Wmismatched-tags warns about forward-declaring a class as a struct
or vice versa.
Simplify the random_choose template (PleasingFungus)

Rather than expanding recursively, just make an array of the parameters
and roll a single random number.  Use reference_wrapper to avoid making
copies, but probably that is overkill for the simple value types we
currently use.
Split random_choose into by-value and by-reference versions.

random_choose() now returns an argument by value, avoiding the overhead
of constructing reference_wrappers for simple value types.  The call-by-
reference version still exists as random_choose_ref(), currently unused.
Maybe a non-const version of that would be useful at some point.

This lets us eliminate the overload for const char *, since an array
passed by value already decays to a pointer.
Remove random_choose_ref.

This version didn't work correctly, because the arguments after the first
were passed by value, so we were returning a reference to a temporary.

It can be implemented independently if needed.
Remove a stray colon from travis announcements.

The %{message} already ended in a full stop, so doesn't need a colon.