When the blockchain forks people often point at external sources of validation for this such as
blockchain.info.
I’m wondering if the blockchain itself is able to keep track of forks in a provable way – i.e. using proof of work or similar - and if and of so if there is any way to prove the age of the blocks on a fork. E.g. could someone mine a fork weeks/months after it was started and add new blocks, as long as the median age was within the correct range would the blocks be acceptable (although most nodes would not propagate them)?
It is not possible. A block is only aware of itself and the block before it. Your node could theoretically record every single fork, but that would take a lot of data since orphan blocks (essentially mini-forks) happen every single day. It would require a connection to every single node in order to catch every single fork.
Someone could mine a fork for a long time, but the only way for it to be accepted is if it is longer and more difficult. The timestamps don't matter. This would only work well if the miner was extremely lucky or had more hash power than the main network (assuming he isn't mining there also).
I understand that Gavin uses a private key to lock the blockchain at a certain age into state as "fixed" from the perspective of the core bitcoin software, does this have any effect on forks that have occurred in the past?
Actually no. Gavin does not use a private key to lock anything or put anything into a "fixed" state. There is nothing that does this. However, there are several checkpoint blocks hard coded into the code. If your blockchain doesn't match the checkpoint blocks, then all nodes will reject it.