refactors some disposals filtering code and remaps some disposals pipes

New things!
/obj/structure/disposalpipe/tagger - retags a holder when it passes through
/obj/structure/disposalpipe/tagger/partial - retags a holder when it passes through two times; good for loop detection
/obj/structure/disposalpipe/sortjunction/wildcard - filters out all holders that are tagged
/obj/structure/disposalpipe/sortjunction/untagged - filters out untagged holders

Tagging doesn't use an icky list index system any more, tags are put into a global list and directly checked against.

Changed the map around a bit, disposals is now a proper loop but anything that's not tagged, is tagged with "Disposals" or anything that passes the tagger twice will be filtered out.

Not a feature, just a fix for drones being sad about weird disposals. <3
Merge pull request #5119 from boopcat/happydrones

refactors some disposals filtering code and remaps some disposals pipes