JeffsInventions:
What are interrupts in this context and why can't they be used simultaneously by two devices?
As far as I can see the Servo library levers off the hardware PWM generation to cause an interrupt when it is time to generate a servo pulse. This stops the code from doing what it is doing briefly and does something else (pulse the servo). They do this to extend the number of pins that can generate servo pulses from more than just the hardware-supported PWM pins.
Also SoftwareSerial uses interrupts to process incoming data. HardwareSerial does as well but not for as long. In the case of the servo, where I gather the exact length of the pulse is important, if it happens to be processing an incoming GPS byte, the servo pulse will be extended, probably sending the wrong length pulse.
JeffsInventions:
Some brief googling did not turn up how to implement HardwareSerial. Do you have advice as to how to do this/a link that describes how?
It's just Serial ... the basic serial examples show that. Use pins 0 and 1, and then do stuff like:
Serial.begin (GPSBAUD);
And then:
// read gps
while(Serial.available())
{
int c = Serial.read();
... and so on.
You've already got Serial.begin there. I don't know why as you don't seem to be using it. The hardware Serial is preferred to software Serial.
If that doesn't work (although I guess lots of people would be doing servos and serial) you could always use the hardware PWM pins and "manually" generate the correct length pulses. The hardware PWM can generate pulses without needing to use interrupts at all.