Added CanFill and Fill to IFluidBlock

Commit comment-
"Designed to be used by pump/machine style blocks that want to fill a
block. These two methods should be used to tell the machine that it can
or can't fill the block. As well adds the option of allowing the block
to define how it wants to be filled."

The reason for the change is to allow more control over how a block is filled by a machine. Currently my only way to automatically fill a block is to check for !sourceBlock. Then set the block and meta to the fill block if its not a source. This works for generic fluids that act like the classic fluid blocks. However, when i start to hit cases of were people have custom fluid block it starts to act up.