Basic shadow datatypes

@markhibberd @maxpow4h @etorreborre @charleso @raronson 
Sorry, I just saw the reference above, but glanced over it. I don't think this should exist, but even if it did, it can't wrap `Location` it is imprecise.