Adding FilteredBuffer
Cleaned up buffer code a bit.

Just headers and stuff, and moved one of the slots out of the container
because it might be useful for other stuff.
Added color modifier support to Facades
Fix pipe plug select box + fill/drain

It should now be possible to add plugs to adjacent pipes without
breaking either pipe.
Merge branch 'master' into SandGrainOne-FilteredBuffer
Fix brightness issues with Quarry/Pump
Removed unneeded ISpecial refs
Fix facade rotation. It works again with new meta system.
Unused imports must die. Some formatting.
allow IPipe to be used in a much wider set of situations

In many places (eg triggers) a full Pipe object is needed to be passed.
This means that you can not use an IPipeTile in many cases, because you
can only get an IPipe from it.

Adding in these functions means that a cleaner api interface/ code-base
split can be achieved, with virtually all pipe types being able to drop
their use of the concrete TileGenericPipe.(Pipe)pipe for use of the API
IPipeTile.(IPipe)getPipe().

This PR does not break old mods using the new version, as it only adds
functions.

In the long run this makes writing sub-mods for BC easier, as direct use
of core BC classes can be avoided, leading to a larger immunity to BC
coding refactors breaking sub-mods. I have no profiling data, but java
should inline the trivial,and non-overridden, functions resulting in no
performance hit from this change unless someone does something silly
like override it themselves.

the x/y/z coord updates are needed as they are currently used by
BlockGenericPipe, GateVanilla, ITriggerPipe.isTriggerActive, and various
GUI related network code.

Most of those types of actions (triggers, gui) would be performed by
mods also, so having access to the pipes coordinates via an API would be
useful.