HalfAdder Modified

New implementation of HalfAdder without using GATES as the base class. Makes it more flexible and clean.
Added test cases too.