remove unnecessary usage of safe_at_c in a few functions
change safe_at_c to be more generic by taking the value to use if none exists. Add mpl_safe_at_c that does the same for MPL sequences
use mpl_safe_at_c in is_definitely_vector and is_definitely_not_vector to support inputs that are statically 1D or 0D