GPS can be used to determine the position with a fair accuracy.
GPS requires you to be able to see the GPS satellites. If you are in a tunnel or on a subway this will not work.
Another way to determine you position is using accelerometers. If you know the position and the speed at a given time and you know all the accelerations done since that time you can compute the current location. It is computed as: position integral speed integral integral accelerations.
To do this accurately you need to read the accelerometers very often. If the reading is done in a FPGA it can be done several 1000 times per second. Depending on the power consumption this may be more power efficient than determining the GPS position again and again.
This is not possible, firstly, you need some orientation reference, such as an gyroscope or compass.
Unfortunately also, the accellerometers are simply not good enough for this.
 is the datasheet for an example of the sort of accellerometer in the neo.
Accellerometers have a certain amount of noise. Simply reading them often does not reduce - and in some cases may increase this noise.
This noise gives you severe positioning errors. An error of only a thousandth of a G gives an uncertainty of velocity of 10mm/s after a second, 1.2m/s after 2 minutes. This is 80m after 1 minute, 8Km after 10 minutes.