The Chest/Dispenser can be seated directly besides the Workbench or be connected to it via Redstone Wire of infinite length.
Multiple Chests/Dispensers can be linked with Redstone Wire for in case a Chest/Dispenser is full.
Filtering is possible using Signs within the Redstone Wire line labeled with the english name of the Block/Item (see http://www.minecraftwiki.net/wiki/Data_values ) or its decimal ID to let that type 'pass' that Sign.
You can also use common parts of Block/Item names to group them, like "stairs" will fit for wooden, brick or stone stairs.
Filtering multiple Blocks/Items is also possible by simply separating their names/IDs by comma.
A nearer chest/dispenser is prefered over a more distant chest/dispenser, EXCEPT there's a sign involved: A filtered chest/dispenser is always preferred over a not filtered one!
Feel free to create a (free!) fork, get the sources here:
1.3.0 http://minecraft.dg4sfw.de/Minecraft111021a.tgz (stable)
1.5.0 http://minecraft.dg4sfw.de/Minecraft120131.tgz (rewritten: finding algorithm is better, no "*" sign needed, but still has bugs)
1.5.1 http://minecraft.dg4sfw.de/Minecraft120205.tgz (latest one, work in progress)