use external dash library

Five months ago I tried to have a discussion about starting to depend
on the external Dash library.  Unfortunately a troll appeared, making
any meaningful conversation impossible.  This was very stressful and
shortly after I almost had a burnout.

Back then I said I would eventually reopen the discussion.  I have now
decided not to do so and instead have start to depend on dash without
any further discussion.  I have considered the concerns raised back
then and have come to the conclusion that me having to work around
Emacs Lisp's limitations is a greater cost (not only to me, but also
to Magit as a project and to its users) than any of the concerns that
were raised.

---

I write Emacs extensions because working with "the buffer" as opposed
to e.g. "the dom" is rewarding.  On the other hand Emacs Lisp leaves
much to be desired.

Using Dash makes some of the major pain points go away.  That's why
many in the new generation of extension authors use Dash.  It makes
our lives easier if we don't have to constantly reinvent the wheel,
just so that we too get to use some of the improvement made to LISP
over the last few decades.

Users benefit too, because by using a library we can focus on the
project specific issue.   And when we use well tested and widely
used libraries instead of quick hacks, then bugs are less likely.

On the other hand this might cause some inconvenience for some users.
But it is the author not the user who gets to decide what language
(and in this case language libraries) the author uses.  By improving
Magit I provide a lot of convenience to its users.  A troll who attacks
me for occasionally doing things that make my life easier, instead of
his life, misses the bigger picture.  Consider it a reward for working
on Magit.

---

At this point I have just quickly scrolled though the code and started
to use forms from Dash in places that jumped at me.  There surely are
many more places where doing so would be beneficial.  As I run into
these places I will start using Dash there too.
Merge branch 'n/dash' into next