Adds Dataset#replace_select_with_alias to replace column selections with aliases

This method is useful when building up a dataset over disjoint steps when `SELECT` statements for certain columns will need to be replaced with aliases before the dataset is finally retrieved. The method allows objects that want to transform a dataset via alias to not care about what columns the dataset already contains.