Added an abstract base blockfluid implementation

I coded this yesterday but apparently failed to push it