Given a list of construction shifts with overlapping times, write a function to merge overlapping shifts and calculate total billable hours.
Represent each shift as [start, end], where both values are numeric hours and start < end. Return a tuple containing the merged shifts in chronological order and the total billable hours. Treat touching shifts, such as [1, 3] and [3, 5], as mergeable.
def merge_shifts(shifts):