fault: A Python Embedded Domain-Specific Language for Metaprogramming Portable Hardware Verification Components