Write a Python function to parse and chunk large unstructured documents efficiently for downstream vector embedding. Normalize arbitrary whitespace, preserve token order, and return overlapping chunks whose size is bounded by a supplied word limit. Define the function signature and input/output shapes below.
def chunk_document(document, max_words, overlap):