more type checking, more information hiding, return refs, add keywords

Add Arduino Keywords file
declare constants and methods const - protect from programming errors, use less SRAM
use constant for NUM_TIMERS (easier to adapt to other devices)
return references rather than full object (less object copying, smaller, faster, clearer).
Use unsigned for arguments that should not be negative (prevent errors).

Information hiding - protect several implementation details (callbacks array, Timers array, Timer type), makes clearer what the public interface is, prevent user from modifying internal state.