Feature add a builder for interface

Hello,

I like your design of the fluent builders. Though a builder for interfaces would be nice.

I try to closely following your formatting and coding conventions. If something is wrong, don't hesitate to criticize.

You can find in this PR : 
 * a builder for interface
 * a test for the builder for interface
 * adding a new method "interface" in the BuilderFactory
 * a test for the new method

Hope this helps :beer: