New way of defining devices and a bit of optimization

Hi,

I really like your project and I hope this will help.

I changed the Device class constructor and now devices are defined by their start/end address instead of the start adress and size.
I also optimized the Device.isComplete() method.

N.B. There is a typo error in the commit message ```Device.size()```, it's ```Device.getSize()```