Divide driver source files into directory hierarchy

Description

Proposed structure:
cpp/ (C++ API stuff here)
c/ (C API stuff here)
common/ (Everything else that's shared between APIs)
common/requests/ (Request objects)
common/responses/ (Response objects)

I'm fine with going more granular under `common/`, but I don't want to go too fine grained.

Environment

None

Pull Requests

None

Assignee

Unassigned

Reporter

Michael Penick

Labels

None

PM Priority

None

External issue ID

None

Doc Impact

None

Reviewer

None

Pull Request

None

Size

None

Epic Link

Fix versions

Priority

Major