Implementation of pulseIn

Implementation header and source for pulseIn.
includes an implementation of a helper function, _Duration, which calculates durations between start and end times (in microseconds) compensating for timer overflows.

pulseIn will handle LOW and HIGH signals