adding useful abstractions
I was interested in some of the new abstractions.

Event cheduling is indeed something to look at, will investigate your code later.
I am rather pleased with the SPin struct, it masks data in one byte that typically use 4 bytes. (one int for pin, one int for last state)
This is 4 times more space efficient.
example.pde
#include "Pins.h"
SPin led, pot, sw;
void setup()
{
set( led, 13, OUTPUT, ON );
set( pot, 2, INPUT );
set( sw, 12, INPUT, PULLUP );
}
void loop()
{
if(digitalRead2(sw))
{
set(led,ON);
}
set(led,OFF);
}
Pins.h
#include "WProgram.h"
#define constant (static const)
#define PULLUP true
#define ON true
#define OFF false
struct SPin
{
byte pin : 5;
byte mode : 1;
byte state : 1;
};
void set(SPin& pin,byte pinNumber,boolean mode,boolean state=false)
{
pin.pin = pinNumber;
pin.mode = mode;
pin.state = state;
pinMode( pin.pin, pin.mode);
digitalWrite( pin.pin, pin.state);
}
void set(SPin& pin,boolean state)
{
pin.state = state;
digitalWrite( pin.pin, pin.state);
}
boolean digitalRead2(SPin& pin)
{
return (digitalRead(pin.pin)!=pin.state ? true : false);
}
unsigned int analogRead2(SPin& pin)
{
return analogRead(pin.pin);
}
void toggle(SPin& pin)
{
if ( pin.mode==OUTPUT )
{
pin.state ? set(pin,HIGH) : set(pin,LOW);
}
}