[ArrayManager] DataFrame constructors
xref https://github.com/pandas-dev/pandas/issues/39146

In this PR, I am trying to ensure what when we construct a DataFrame, we directly construct the proper manager (depending on the option settings) instead of converting at the end of the constructor (as is done now). To that end, I am passing through a keyword to indicate the type of the manager to be created to the different internal construction methods like `arrays_to_mgr` etc.