The copy constructors and copy assignment operators can't propagate
allocation failures.
As a replacement, introduce a new member function, Vector::clone() that
returns an ErrorOr<Vector>.
This commit replaces most usages of the Vector copy constructor by
either using .clone() or avoiding copies in the first place.
The class is in the DeviceTree namespace, so the prefix is redundant.
Calling it a 'View' is also somewhat misleading, as it is not simply a
cheap-to-copy reference to the underlying memory but is instead marked
as AK_MAKE_NONCOPYABLE.
This makes it easier to work with device tree nodes and properties, then
writing simple state machines to parse the device tree.
This also makes the old slow traversal methods use the
DeviceTreeProperty helper class, and adds a simple test.