Programatically build docker container

Use-case
When you need to programatically build, create (stop and remove it if duplicate container already exist), attach and start container -
Usage
new DBuilder({
name: 'cool-one',
port: 3306,
exposed: 5432,
envs: { test: 1 },
image: 'path'
}).up(() => {
console.log('done and done');
});
Listen to events
let builder = new DBuilder(...);
builder.on('complete', () => {});
builder.on('download', () => {});
builder.on('run', () => {});
builder.on('stopped and removed', () => {});
builder.on('error', error => {});
builder.on('data', data => {});
builder.up(() => ...);
Run tests
In order to run tests you should have installed and running docker.