new patch DSL, with support for checksums

Man has long dreamed of having checksumming supported for patches (#6795, #10199).
Unfortunately, all who have tried the challenge ended up giving up (#11956).

Until now.

New DSL examples (from the socat formula):

    patch :p0, "https://trac.macports.org/export/90442/trunk/dports/sysutils/socat/files/patch-xioexit.c.diff", "4a72f278d960310144556f7e1c2645f492b289bdc28de9f786a1ecd6dcdf21b7"
    patch :p1, DATA if build.devel?

Yes, the lines are long.

[SNIP]