text: Title: Add support for generating default field values using pydantic
  Body: ## Problem
  
  <!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
  
  Currently if you want to manually instantiate values you need to also pass values for all fields that have default values. We should support automatically passing defaults for some default types.
  
  ## Suggested solution
  
  <!-- A clear and concise description of what you want to happen. -->
  
  We will be able to support fields like these:
  
  ```prisma
  model User {
      f1 String @default(cuid())
      f2 String @default(uuid())
      f3 DateTime @default(now())
  }
  ```
  
  But we will not be able to support `autoincrement()` or `dbgenerated()` as they need to talk to the database:
  
  ```prisma
  model User {
      f1 Int @default(autoincrement())
      f2 Unsupported("circle")?  @default(dbgenerated("'<(10,4),11>'::circle"))
  }
  ```
  
  If you do have fields with these defaults then you can still use them you just won't be able to manually construct model instances, you'll have to use the standard Prisma API to get model instances.
  
  Adding support for `cuid()` and `uuid()` will require us to provide the rust functions that prisma uses to generate these defaults as we should not differ from their behaviour in any way. We should package these into FFI bindings and use a package like `_prisma_defaults` which we could then pass to auto-generated model definitions like so:
  
  ```py
  class User(BaseModel):
      id: str = Field(default_factory=_prisma_defaults.cuid)
      name: str
  ```
  