Added invocation timer and recurrence rule.
Changed Navigator.GetExtendedData to use Marshal.Copy instead of UnmanagedMemoryStream, so "unsafe" isn't needed.
Changed ArgumentOutOfRangeExceptions so they always have "actual value" populated when thrown.