Be more careful that we don't underflow zin arrays.

An array with specified size can be initialised with fewer elements than
its size, in which case the remaining elements are zero-initialized.  So
if someone accidentally reduced the number of entries, we wouldn't notice
until someone's recite actually hit those strings and dereferenced a null
pointer.

Instead, leave the array's length unspecified, but statically assert that
it has the length required by the text-generation code.  Then a too-short
list will result in a compile-time error.  Place the assertions with the
text-gen code rather than with the arrays, since the number being
asserted against should reflect the trit calculations and vice versa.
Placate g++-4.9 -Og

With -Og, not enough flow analysis is done to deduce that mons was
initialised in this loop condition, resulting in a bogus warning:

   files.cc:1852:75: warning: ‘mons’ may be used uninitialized in this
     function [-Wmaybe-uninitialized]

The warning didn't happen with -O0, which disables maybe-uninitialised
warnings; or with -O1 (or higher), which does enough analysis to figure
out that mons was initialised after all.

This change probably pleases PleasingFungus, too.
Make Gozag sparkly

Add sparkles on active Gozag gold, so it's a bit more obvious
now that it no longer has an aura. Doesn't currently appear
when a monster is on top of the gold, since it was visually
overwhelming - patches welcome...

Thanks to Lasty for testing & Grunt for fixing!
Fix barding brand generation (drke)

Barding of flying was accidentally removed in 3cebfc1d9e22b.

What terrible code...
Partially clean up _determine_armour_ego

The only change in behaviour should be sub-percent differences
in armour ego weights for body armours, & the removal of an
ancient and truly mysterious Archmagi ego special case. (It was
guaranteed to never appear on ego re-rolls, for reasons that
crawl developers appear to have been baffled by for at least the
last seven years.)

If Archmagi becomes too common after this change, there are
simpler ways to adjust the frequency...
Don't pretend successful pickup failed (#9294, ebering)
Simplify _put_item_in_inv calling convention.

By not requiring that put_in_inv be preinitialised to false.
Remove some support for pre-C++11.
Move definition of COMPILE_CHECK to AppHdr.h

This lets us use it in all of our headers, even ones that must be
included before debug.h.
Don't put an out-of-range value in a short.

Use 32767 (not SHRT_MAX, for hypothetical archs with 32-bit shorts) to
represent shop items in item_def::link.  Assert that this doesn't conflict
with monster items.

The save-fixup code is currently unconditional but that is negotiable.
Rename stack_iterator::link() to index()

It was confusing for si.link() and si->link to mean different things.
Refactor reading

Major effects: effects preventing you from reading scrolls now
appear in MSGCH_PROMPT instead of the default channel, and
silence, water elementals, and ru's no-scrolls effect no longer
prevent you from reading books with (r). This also means that
those effects are only warned about after you finish choosing a
scroll through (r), rather than when you hit (r). If that seems
annoying, please remove the "read books with (r)" functionality.
Make Blurry Vision cause reading to take longer

Try number two (ref 6df881ba), but this time implemented as a
delay, such that it actually takes longer for e.g. tele to kick
in after you start trying to read the scroll.

Currently takes one extra turn for each level of the mutation
(so 1+1 turns at level 1, 2+1 for level 2, 3+1 for level 3).
Possibly it would be better for the last level to give 4+1.

TODO: Would be good if there was a DELAY_ARMOUR_* style chance to
cancel out of the reading midway through, but I ran into
technical issues with the implementation - its messaging caused
the interrupt to fire immediately every time...?
Merge https://github.com/crawl-ref/crawl-ref