I don't know PIC much, but played with something similar on Motorola. You could measure the duty like this:
1) check the level on the input pin (receiver output)
2) if it is 1, increment variable V1; if it is 0, increment V2
repeat steps 1) and 2) quickly (say, 20-thousant times a second in timer interrupt routine or even in loop in the program) for e.g. 1 sec.
Duty cycle is V1 / V2.
If you just need to copy the receiver output to another pin without any change, you could just set up interrupt on the input pin so that it is generated for both rising and falling edge and in the interrupt routine then do something like this:
if ( Input_pin == 0 ) Output_pin = 0; else OutputPin = 1;
Or the interrupt routine set up as in prev. case could measure the length of the "pulse" - which defines servo position - like this:
if ( Input_pin == 1 && Measuring == false) // interrupt from start of the pulse
{ Reset_Timer_Counter; Measuring = true; }
if ( InputPin == 0 && Measuring )
{ pulse_length = TIMER_COUNTER; Measuring = false; }
Actually, the period of the signal (and duty also) should not be important - position of the servo is defined by the length of the pulse (1 to 2 ms). At least I think so...