Created new version of gpio.h

This branch is to showcase several ideas that I think would be useful in
RASWare and may not nescessarily need to be included.

1. I've added definitions for a tPin type that represents all possible
pins. This allows for passing pins as arguments into functions as single
arguments as shown in the new gpio.h file. This is how I think the pins
should be handled as opposed to the complex macros we currently have.

2. I've added GetPin and SetPin functions for setting and retrieving
individual pins without prior setup. This has been avoided in previous
RASWare versions due to the existance of GPIORead and GPIOWrite but I
think having versions that use the new pin arguments and save two lines
can be useful and the fact that if works on indivisual pins welcoming to
unfamiliar raslets.

3. I've also modified the interrupt handlers to use individual pins. This
means you can only register a single interrupt per pin, however the
ability to register on the specific pin is worth the trade off in my
opinion.

I have not tested the new implementations and it does not yet compile due
to changed file names. However it should be functional as is.
Made nescessary changes so that code will compile with new gpio.h

Required disabling encoders temporarily
Modified encoder to use the new gpio functions

Requires implementation in RASDemo
Completed implementation of the encoders

Added reset function and added testable example code to RASDemo.
Actual Testing is required
Added a SetPinZ function

Will place the given pin into high impedance state.
Tested and applied encoders.

Encoders have shown to be working indicating that gpio is functional.
Created pwm.c and pwm.h for a centralized pwm generating module

Has not been tested, must be implemented in motor and servo
Modified servo code to use pwm module
Modified motors to use pwm module

Has not been tested, but is now capable of being tested.
Added testing code to RASDemo
Merge branch 'master' of https://github.com/ut-ras/Rasware2013 into pin_interrupts

Conflicts:
	RASLib/src/Startup.s
Added pwm phase and frequency manipulation per Frank's request.

He pointed out that it was nescessary for the motor code to modify pwm's
phase and period. So as a solution they are now variables in pwm and can
be changed with SetPWMFrequency and SetPWMPhase. If the added runtime
usage proves problematic, seperating pwm into both motor and servo modules
will be nescessary as Frank originally suggested.
Modified motor and servo code to use the new pwm functions
Combined pwm duty and phase into single SetPWM function

From modifying motor and servo it seemed like duty and phase did not need
to be seperated.
Got pwm, servos, and motors functional.

Through testing determined that interrupts does in fact become an issue.
By adding optimizations, the current code of RASWare can do 16 PWM signals
while still having a servo resolution of 256 bits.
Increased possible servo count

A small optimization shaved off a few cycles in the pwm handler.

Also, most libraries I could find online has a resolution of 60 for servo
signals. I've reduced the resolution to 128 allowing us to now have up to
31 pwm signals simultaneously.
Made several small changes

Standardized the use of tCallback where applicable, and sanitized the
return value of GetPin
Improved timer module

1. Added the ability to use ints as identifiers for functions, allowing
you to stop currently registered functions.

2. Fixed a lot of bugs that I didn't notice. Should have tested better.
Mostly related to not getting accurate time. One was a missing volatile
adjective. Underflow issue. Race conditions.
Removed unescessary TimeS functions and added US macro

TimeS functions are pretty useless as the float accepting functions are in
seconds. TimeUS functions should still be kept as they allow for no
overhead when dealing with the internal representation of time.

The macro US can be used by other functions for easy casting to US
allowing SensorUS to be written trivially.
Merge pull request #9 from ut-ras/pin_interrupts

Merge pin_interrupts